运行 自动化测试时 Selenium Webdriver 连接超时

Selenium Webdriver connection timing out while running automation tests

虽然 运行ning 自动化测试我有时会收到 Selenium Webdriver 的超时错误(我认为这至少是问题所在)。我和我的团队最近都迁移到了 Macbook(从 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

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

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

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

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