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

时间:2019-05-02 14:57:04

标签: ruby macos selenium selenium-webdriver capybara

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

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

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

我使用的宝石是水豚(3.11.0),黄瓜(3.1.0)和Selenium-webdriver(3.141.0)。我通过HomeBrew安装了ChromeDriver(73.0.3683.68)

有人遇到此问题并找出原因了吗?

1 个答案:

答案 0 :(得分:1)

端口9515是chromedriver运行的默认端口。如果您碰巧使用的是Chrome / chromedriver v74,请尝试回滚至73或回滚至75-据报道,它在随机挂起时会出现问题。

另一个可能的解决方案是升级到Capybara> = 3.16.0,默认情况下使用对chromedriver的持久连接。这意味着更少的连接打开/关闭和chromedriver在建立连接时挂起的机会更少。