Заставить безголовый браузер перестать загружать страницу.

Я использую рубиновый гем watir-webdriver. Он запускает браузер (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/

8
задан bbbco 6 April 2012 в 20:02
поделиться