私はwatir-webdriver ruby gemを使用しています。ブラウザ(Chrome)を起動し、ページの読み込みを開始します。ページの読み込みが遅すぎ、watir-webdriverがタイムアウトエラーを起こします。ブラウザのページの読み込みを停止するにはどうすればよいですか?ヘッドレスブラウザの読み込みを停止するページ
require 'watir-webdriver'
client = Selenium::WebDriver::Remote::Http::Default.new
client.timeout = 10
@browser = Watir::Browser.new :chrome, :http_client => client
sites = [
"http://google.com/",
"http://yahoo.com/",
"http://www.nst.com.my/", # => This is the SLOW site
"http://drupal.org/",
"http://www.msn.com/",
"http://stackoverflow.com/"
]
sites.each do |url|
begin
@browser.goto(url)
puts "Success #{url}"
rescue
puts "Timeout #{url}"
end
end
########## Execution result ##########
# Success http://google.com/
# Success http://yahoo.com/
# Timeout http://www.nst.com.my/
# Timeout http://drupal.org/
# Timeout http://www.msn.com/
# Timeout http://stackoverflow.com/
########## Expected result ##########
# Success http://google.com/
# Success http://yahoo.com/
# Timeout http://www.nst.com.my/
# Success http://drupal.org/
# Success http://www.msn.com/
# Success http://stackoverflow.com/
ページの読み込みが完了する前にブラウザが他のコマンドに応答しないようです。ブラウザがロード中のページを捨てて、次のコマンドを実行させるにはどうすればよいですか?
を更新し
私は多分それはこの問題を解決するのに役立ちます興味深い機能フラグloadAsync http://src.chromium.org/svn/trunk/src/chrome/test/webdriver/webdriver_capabilities_parser.ccを発見しましたか?私はクロムドライバを起動するときにこれを設定するためのワイア(webdriver)を作る方法はまだ分かりません。あなたは多くのサイトを持っている
require 'watir-webdriver'
client = Selenium::WebDriver::Remote::Http::Default.new
client.timeout = 60
@browser = Watir::Browser.new :firefox, :http_client => client
begin
@browser.goto mySite
rescue => e
puts "Browser timed out: #{e}"
end
next_command
場合は、しようとしている:このフラグは、ここでhttp://codereview.chromium.org/7582005/
私の頭の上には、このことの説明が1つしかありません。 Watirはシングルスレッドです。 –
私は複数のスレッドでそれを使用しようとしていません。私はちょうど1つのコマンドとそのタイムアウトが次のコマンドを実行することは不可能な後になぜ思う。 – Molfar
私はシングルスレッドと言っていますが、webdriverにメッセージを送信して同期呼び出しを行い、webdriverからの応答を得るまで何もできないことを意味します。したがって、非同期呼び出しを同期呼び出しに変更するまで、このシナリオで実行したいことは実行できません。 –