我正在使用 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也许它可以用于解决这个问题?我还不明白如何让 watir (webdriver) 在启动 chromedriver 时设置它。这里介绍了这个标志http://codereview.chromium.org/7582005/