首页 > 解决方案 > 当我需要很长时间加载页面时,如何在 Ruby Watir 中停止页面加载并关闭浏览器?

问题描述

我尝试了不同的方法来延长浏览器的加载时间,但仍然给我以下错误 Net::ReadTimeout ,我想知道这是否是一种可以检测页面加载时间的方法,例如 10 秒后它自动关闭并进入下一个流程

browser.driver.manage.timeouts.implicit_wait = 40
    browser.driver.manage.timeouts.page_load = 40
    Watir.default_timeout = 40

标签: ruby-on-railsrubyselenium-webdriverwebdriverwatir

解决方案


当您使用 WATIR(等待元素)时,您的第一行不是必需的。当您直接使用 selenium 时,这是必要的。因为 WATIR 有它自己的计时器,它会等待 30 秒进行元素交互。

对于第二个(页面加载),您必须使用以下行来增加或减少页面加载时间。默认超时为60秒,如果要增加时间(例如120),则编写以下coe

 client = Selenium::WebDriver::Remote::Http::Default.new
 client.read_timeout = 120
 browser = Watir::Browser.new :firefox, http_client: client

如果您想告诉驱动程序您不想等待任何页面加载,请使用以下语句

Watir::Browser.new :firefox,page_load_strategy: 'none'

如果你想等待页面加载到指定时间,如果没有加载,并且你想关闭浏览器,那么编写以下代码

begin
  browser.goto 'Your Url'
rescue Net::ReadTimeout
  browser.close rescue ''
end

推荐阅读