首页 > 解决方案 > 运行自动化测试时 Selenium Webdriver 连接超时

问题描述

在运行自动化测试时,我有时会收到 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)

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

标签: rubymacosseleniumselenium-webdrivercapybara

解决方案


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

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


推荐阅读