我有一个页面有时加载超过一分钟。假设这是预期的行为并且不会改变。在这些情况下,我得到Net::ReadTimeout
。
请注意,这是在通过单击上一页上的按钮而不是ajax请求导航到页面之后。因此Capybara.using_wait_time
没有帮助。
我尝试过一些激进的事情(其中一些我知道不会起作用),如:
page.driver.browser.manage.timeouts
' implicit_wait
,script_timeout
和page_load
。Selenium::WebDriver::Remote::Http::Default
的{{1}}值。timeout
' Net::HTTP
。read_timeout
似乎无效。这应该是非常微不足道的,但我还是找不到办法。
如果你知道一个很棒的webdriver不可知解决方案。如果不是 - 我正在使用 selenium 。
答案 0 :(得分:11)
Selenium有很多不同的超时设置,其中一些可以在运行时更改,另一些必须在初始化驱动程序时设置。您最有可能遇到Http :: Default超时,默认为60秒。您可以通过将您自己的实例作为http_client
传递给Selenium驱动程序来覆盖它Capybara.register_driver :slow_selenium do |app|
client = Selenium::WebDriver::Remote::Http::Default.new
client.timeout = 120
Capybara::Selenium::Driver.new(app, http_client: client)
end
然后使用:slow_selenium驱动程序进行测试,这将花费一分钟来加载页面