【问题标题】:Selenium Webdriver connection timing out while running automation tests运行自动化测试时 Selenium Webdriver 连接超时
【发布时间】:2019-09-21 03:14:53
【问题描述】:

在运行自动化测试时,我有时会收到 Selenium Webdriver 的超时错误(我认为这至少是问题所在)。我和我的团队最近都迁移到了 Macbooks(从 Windows 和 Ubunutu 机器的组合)并且都出现了这种行为。

在运行一组测试时,我会(似乎是随机地)在控制台中得到以下错误输出:

Errno::ETIMEDOUT: Failed to open TCP connection to 127.0.0.1:9515 (Operation timed out - connect(2) for "127.0.0.1" port 9515)

这不会一直发生,有时我会运行一个包并且没有任何此类错误,有时我会出现多次。

这里是注册驱动程序的代码(如果这里有任何东西指向问题可能是什么):

Capybara.register_driver :selenium do |app|
  opts = Selenium::WebDriver::Chrome::Options.new
  opts.add_argument '--start-maximized'
  opts.add_argument 'disable-infobars'
  opts.add_argument '--disable-notifications'
  opts.add_preference(:safebrowsing,
                      enabled: true)
  opts.add_preference(:browser, set_download_behavior: { behavior: 'allow' })
  Capybara::Selenium::Driver.new(app, browser: :chrome, options: opts)
end

我使用的 gem 是 Capybara (3.11.0)、Cucumber (3.1.0) 和 Selenium-webdriver (3.141.0)。我通过 HomeBrew 安装了 ChromeDriver(73.0.3683.68)

有没有人遇到过这个问题并找出原因?

【问题讨论】:

    标签: ruby macos selenium selenium-webdriver capybara


    【解决方案1】:

    端口 9515 是运行 chromedriver 的默认端口。如果您碰巧使用的是 Chrome/chromedriver v74,请尝试回滚到 73 或转发到 75 - 据报道 74 存在随机挂起的问题。

    另一个可能的解决方案是升级到 Capybara >= 3.16.0,它默认使用与 chromedriver 的持久连接。这将意味着更少的打开/关闭连接以及 chromedriver 在连接建立期间挂起的机会更少。

    【讨论】:

    • 不幸的是,我正在运行使用 HomeBrew 安装的 ChromeDriver 73.0.3683.68。我会将这些详细信息添加到问题中
    • @Brayw 要尝试的另一件事是将 Capybara 更新到 >= 3.16。 v3.16.0 转为使用持久连接,这意味着更少的打开/关闭连接
    • 这似乎已经完成了这项工作(至少,经过多个小时的运行测试后,我没有遇到一个超时错误)。如果您将解决方案放入答案中,我会接受,非常感谢!
    • @Brayw 更新了答案。
    猜你喜欢
    • 2017-03-23
    • 2020-02-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-24
    • 2014-10-07
    • 1970-01-01
    • 2016-04-17
    相关资源
    最近更新 更多