我已经寻找其他问题的答案,但找不到。
我的问题是,我有许多需要测试的结果,但当我点击不加载页面的 URL 时,我的脚本不断失败。以下网址无法加载。当此 URL 未加载时,我想继续测试。
我尝试过使用:
begin
Timeout::timeout(30) do
//enter part that is hanging
end
end
然而脚本只是退出。以下是我正在使用的完整脚本。该脚本将超时并退出......
browser.goto "http://www.mycounciltax.org.uk/results?postcode=WC1N1DF&search=Search"
关于如何允许脚本继续(绕过此 URL 的测试)并进入下一个的任何想法?
require "watir-webdriver"
browser = Watir::Browser.new :ff
browser.goto "http://www.mycounciltax.org.uk/results?postcode=cv5+6bz&search=Search"
content = browser.table.trs.collect {|tr| [tr[0].text, tr[1].text, tr[2].text]}
require 'win32ole'
application = WIN32OLE.new('Excel.Application')
application.visible = TRUE
workbook = application.Workbooks.Add();
worksheet = workbook.Worksheets(1);
worksheet.visible
row = 1; column = 0
content.each do |array|
array.each do |element|
worksheet.Cells(1,1).offset(row,column).value = element #.offset(row,column)
column += 1
end
row += 1
column = 0
end
browser.goto "http://www.mycounciltax.org.uk/results?postcode=WC1N1DP&search=Search"
if browser.table.exists?
content = browser.table.trs.collect {|tr| [tr[0].text, tr[1].text, tr[2].text]}
row = 1; column = 0
content.each do |array|
array.each do |element|
worksheet.Cells(1,125).offset(row,column).value = element #.offset(row,column)
column += 1
end
row += 1
column = 0
end
else
content =0
end
browser.goto "http://www.mycounciltax.org.uk/results?postcode=WC1N1DF&search=Search"
if browser.table.exists?
content = browser.table.trs.collect {|tr| [tr[0].text, tr[1].text, tr[2].text]}
row = 1; column = 0
content.each do |array|
array.each do |element|
worksheet.Cells(1,130).offset(row,column).value = element #.offset(row,column)
column += 1
end
row += 1
column = 0
end
else
content =0
end
browser.goto "http://www.mycounciltax.org.uk/results?postcode=WC1N1DP&search=Search"
if browser.table.exists?
content = browser.table.trs.collect {|tr| [tr[0].text, tr[1].text, tr[2].text]}
row = 1; column = 0
content.each do |array|
array.each do |element|
worksheet.Cells(1,135).offset(row,column).value = element #.offset(row,column)
column += 1
end
row += 1
column = 0
end
else
content =0
end
Update
我的意思是说,我想在执行 if else(将表输出到 Excel 中)之前测试每个 url 是否加载。我可以做一些类似的事情吗
require "watir-webdriver"
browser = Watir::Browser.new :ff
browser.goto "http://www.mycounciltax.org.uk/results?postcode=cv5+6bz&search=Search"
content = browser.table.trs.collect {|tr| [tr[0].text, tr[1].text, tr[2].text]}
require 'win32ole'
application = WIN32OLE.new('Excel.Application')
application.visible = TRUE
workbook = application.Workbooks.Add();
worksheet = workbook.Worksheets(1);
worksheet.visible
row = 1; column = 0
content.each do |array|
array.each do |element|
worksheet.Cells(1,1).offset(row,column).value = element #.offset(row,column)
column += 1
end
row += 1
column = 0
end
begin
browser.goto "http://www.mycounciltax.org.uk/results?postcode=WC1N1DP&search=Search"
if browser.table.exists?
content = browser.table.trs.collect {|tr| [tr[0].text, tr[1].text, tr[2].text]}
row = 1; column = 0
content.each do |array|
array.each do |element|
worksheet.Cells(1,125).offset(row,column).value = element #.offset(row,column)
column += 1
end
row += 1
column = 0
end
else
content =0
end
rescue => e
puts "rescued #{e}"
end
begin
browser.goto "http://www.mycounciltax.org.uk/results?postcode=WC1N1DF&search=Search"
if browser.table.exists?
content = browser.table.trs.collect {|tr| [tr[0].text, tr[1].text, tr[2].text]}
row = 1; column = 0
content.each do |array|
array.each do |element|
worksheet.Cells(1,130).offset(row,column).value = element #.offset(row,column)
column += 1
end
row += 1
column = 0
end
else
content =0
end
rescue => e
puts "rescued #{e}"
end
begin
browser.goto "http://www.mycounciltax.org.uk/results?postcode=WC1N1DP&search=Search"
if browser.table.exists?
content = browser.table.trs.collect {|tr| [tr[0].text, tr[1].text, tr[2].text]}
row = 1; column = 0
content.each do |array|
array.each do |element|
worksheet.Cells(1,135).offset(row,column).value = element #.offset(row,column)
column += 1
end
row += 1
column = 0
end
else
content =0
end
rescue => e
puts "rescued #{e}"
end