【问题标题】:Net::ReadTimeout (Net::ReadTimeout) Selenium RubyNet::ReadTimeout (Net::ReadTimeout) Selenium Ruby
【发布时间】:2014-12-08 21:27:41
【问题描述】:

我看过一些与 Selenium 中的超时错误相关的帖子。这变得越来越难以忍受,因为它使我的测试包无法使用。我正在测试一个正在开发的网页。

我有一个包含大约 300 个测试场景的回归套件,在最新更新到 Firefox 和 selenium webdriver 之前一直有效。现在对于我得到的几乎所有其他测试:

Net::ReadTimeout (Net::ReadTimeout) 错误。

这绝非巧合。有谁知道可能导致突然超时问题的原因?我已经尝试回到以前版本的 webdriver 和 firefox。

【问题讨论】:

  • 使用 FF32 和 selenium-webdriver-gem v2.43.0 再次为我工作。您使用哪些版本?
  • 我使用的是 FF32.0.3 和 webdriver 2.43.0。
  • 抱歉,那我就“走运”了。我的 FF 32.0.3 确实可以工作(在 Ubuntu 14.04 上)。
  • 我发现它在自动化期间每次都在同一个地方超时,但是运行手动测试不会遇到这个问题。这就是将我引向 Selenium 的原因
  • 我也遇到了同样的问题,你解决了吗?

标签: ruby selenium cucumber capybara


【解决方案1】:

另一个使用 RSpec::Retry 的选项,它为间歇性失败的规范添加了重试选项。

require 'rspec/retry'

RSpec.configure do |config|
  # show retry status in spec process
  config.verbose_retry = true
  # Try twice (retry once)
  config.default_retry_count = 2
  # Only retry when Selenium raises Net::ReadTimeout
  config.exceptions_to_retry = [Net::ReadTimeout]
end

【讨论】:

  • 刚刚在 Codeship 上为讨厌的 Net::ReadTimeout 错误添加了 rspec-retry gem,它成功了!
【解决方案2】:

默认超时为 60 秒。要尝试的一件事是调整 internal timeout 以查看是否可以解决问题:

Capybara.register_driver :selenium do |app|
  profile = Selenium::WebDriver::Firefox::Profile.new
  client = Selenium::WebDriver::Remote::Http::Default.new
  client.timeout = 120 # instead of the default 60
  Capybara::Selenium::Driver.new(app, browser: :firefox, profile: profile, http_client: client)
end

【讨论】:

    猜你喜欢
    • 2018-12-12
    • 1970-01-01
    • 2015-02-06
    • 2013-11-16
    • 1970-01-01
    • 1970-01-01
    • 2016-06-05
    • 2017-09-16
    • 2021-07-23
    相关资源
    最近更新 更多