Ruby - 无法在45秒内绑定到锁定端口7054(Selenium :: WebDriver :: Error :: WebDriverError)

Joe*_*sch 11 ruby selenium ruby-on-rails cucumber

我最近在尝试运行任何Cucumber测试时都开始看到此错误消息.我做了一些研究,发现了一些其他类似的错误实例,但大多数是与浏览器相关的问题.我在此输出中看不到任何特定于浏览器的错误消息:

unable to bind to locking port 7054 within 45 seconds (Selenium::WebDriver::Error::WebDriverError)
Run Code Online (Sandbox Code Playgroud)

我看到这里发布的另一个问题得到解答(硒webdriver例外),但是这个解决方案对我不起作用.运行" lsof -i TCP:7054 "不会产生任何输出.

如果有人建议这样做,我已经多次重新启动我的机器并擦掉我的宝石并重新运行"捆绑".

以下是我正在使用的相关宝石:

capybara (0.4.1.2)
cucumber (0.10.7)   
cucumber-rails (0.4.1)
fuubar-cucumber (0.0.9)
selenium-webdriver (0.2.0)
Run Code Online (Sandbox Code Playgroud)

可以肯定的是,我也试过用Firefox 3.6,4.0和5.0运行这些测试.每次都是相同的消息.

不要成为阴谋理论家或任何东西,但在手动退出运行我的测试套件并在Cucumber启动的所有活动Firefox进程上运行之前,一切正常.我在测试套件中同时运行了大约9个Firefox实例.我不确定这是否会导致某些事情发生,从而产生我现在看到的运行Cucumber测试的结果.

有没有人有解决这个问题的建议?

Joe*_*sch 19

更新:解决了问题

将$ DEBUG设置为true并重新运行测试后,此错误最有趣:

<Selenium::WebDriver::Firefox::SocketLock:0x00000102f9c010>: getaddrinfo: nodename nor servname provided, or not known
Exception `SocketError' at /Users/bobrossasaurus/.rvm/gems/ruby-1.9.2-p136/gems/selenium-webdriver-0.2.0/lib/selenium/webdriver/common/platform.rb:131 - getaddrinfo: nodename nor servname provided, or not known
Run Code Online (Sandbox Code Playgroud)

在看了platform.rb:131之后,我注意到它正在尝试连接到端口80上的"localhost"但是失败了.这引起了一面红旗,因为我最近无法通过浏览器访问"localhost",而是不得不使用127.0.0.1:3000来查看我的rails项目.

解决方案:

我错过了/ etc/hosts中的localhost主机文件条目:

127.0.0.1 localhost
Run Code Online (Sandbox Code Playgroud)

相当令人尴尬的问题,但它仍然是答案.