他の質問で回答を探しましたが、見つけられませんでした。Watir-Webdriverで読み込みに失敗し、テストを続行する方法
私の問題は、私がテストする必要がある多くの結果がありますが、私のスクリプトは、ページをロードしないURLをヒットすると失敗し続けるということです。次のURLは読み込まれません。このURLが読み込まれないときは、テストを続行します。
http://www.mycounciltax.org.uk/results?postcode=WC1N1DF&search=Search
私が使用しようとしました:
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
更新
私は(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
ありがとうございました。 これは私が思うものではありません...私はスクリプトにこれを統合して、タイムアウトエラーが返っても(URLが機能しないため)スクリプトを続行できるようにしたいと思います。 – user1077250
ありがとうございます。 これは私が思うものではありません...私はスクリプトにこれを統合して、タイムアウトエラーが返っても(URLが機能しないため)スクリプトを続行できるようにしたいと思います。 If elseを実行して結果をExcelシートに出力する前に、urlが動作するかどうかをテストするように、コードの各塊の周りに開始と救済を入れたいと思います。 – user1077250
上記のコメントをより詳しく説明するために質問を更新しました。 – user1077250