在运行自动化测试时,有时会收到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)
有人遇到此问题并找出原因了吗?
答案 0 :(得分:1)
端口9515是chromedriver运行的默认端口。如果您碰巧使用的是Chrome / chromedriver v74,请尝试回滚至73或回滚至75-据报道,它在随机挂起时会出现问题。
另一个可能的解决方案是升级到Capybara> = 3.16.0,默认情况下使用对chromedriver的持久连接。这意味着更少的连接打开/关闭和chromedriver在建立连接时挂起的机会更少。