Rails:增加Selenium :: Webdriver超时超过45秒,比如150秒?

时间:2016-11-04 05:20:37

标签: ruby-on-rails selenium watir

enter image description here我在我的Rils应用中使用了webdriver gems:

gem 'selenium-webdriver', '~> 2.46.2'
gem 'watir-webdriver', '~> 0.6.11'
gem 'watir-webdriver-performance', "~> 0.2.4"

每天大约一两次我在生产中遇到以下错误,我理解这是因为'WebDriver使用端口7054(“锁定端口”)作为互斥锁,以确保我们不会在以下位置启动两个Firefox实例同时'。

Selenium::WebDriver::Error::WebDriverError: unable to bind to locking port 7054 within 45 seconds

有没有办法将webdriver的超时时间增加到150秒?或任何其他解决方法?

感谢, 格雷格

1 个答案:

答案 0 :(得分:0)

45秒定义为Selenium::WebDriver::Firefox::Launcher类的常量。 Ruby允许您重新定义常量,因此您可以使用const_set更改值:

Selenium::WebDriver::Firefox::Launcher.const_set('SOCKET_LOCK_TIMEOUT', 150)

请注意,这将为您提供有关重新定义常量的警告。如果要避免警告,则必须先删除常量:

Selenium::WebDriver::Firefox::Launcher.send(:remove_const, 'SOCKET_LOCK_TIMEOUT')
Selenium::WebDriver::Firefox::Launcher.const_set('SOCKET_LOCK_TIMEOUT', 150)

(虽然这可以让你改变超时,但我不确定这是否能解决你的实际问题。)