无法在60秒内建立稳定的Firefox连接(127.0.0.1:7055)。

80

运行rspec测试时出现以下错误

在rails中无法在60秒内获得稳定的firefox连接 (127.0.0.1:7055)

使用最新的ruby(1.9.2)和firefox(6.0)

使用rspec-rails、capybara和其他一些gem,但它们似乎不是问题。在另一个环境(linux)中这些测试可以正常运行。

8个回答

98

[更新-这在2015年对我仍然有效|mdurrant|]

我最近遇到了这个问题

你应该升级到capybara v1.0.1以使用正确的selenium webdriver。

为确保生效,我添加了:

gem 'selenium-webdriver', '2.25.0'

在我的 Gemfile 中。

重要提示:
selenium-webdriver gem是针对每个Firefox的后续版本进行更新和发布的。目前,需要版本2.25.0才能支持Firefox 15


11
实际上我已经运行了'bundle update selenium-webdriver'命令,但无论如何,目标都是将selenium-webdriver gem更新到2.5.0版本。更新后测试运行正常。 - Srini K
刚刚完成了。抱歉耽搁了一下。 - Srini K
1
我必须使用gem 'selenium-webdriver','>= 2.5.0'来适配Firefox 11。这使我得到了gem版本2.10... - ZX12R
7
需要使用selenium-webdriver 2.31.0版本才能兼容Firefox 19。似乎答案总是“获取最新的selenium-webdriver”。 - jwadsack
我总是忽略selenium-webdriver的版本号,而是在需要更新时运行bundle update selenium-webdriver - Jason Swett

17

在Ubuntu上,我无法使其在Firefox 10中工作。尝试使用Chrome可以解决这个问题。

安装Chrome Driver

spec_helper.rb:

Capybara.register_driver :selenium_chrome do |app|   
  Capybara::Selenium::Driver.new(app, :browser => :chrome)
end

在您的规范中:

Capybara.current_driver = :selenium_chrome
... tests ...
Capybara.use_default_driver

5
如果您使用的是 Mac 系统,您可以简单地执行 brew install chromedriver 命令进行安装 ChromeDriver。 - Will
对我来说奏效了,除了这一点:Capybara.javascript_driver = :selenium_chrome(而不是设置 current_driver)。 - Tim Scott
切换到Chrome帮助您建立了一个稳定的Firefox连接?太有趣了。 :) - D. Patrick

12

针对在Firefox 12上出现此问题的用户,当前版本的selenium webdriver(2.21)不支持FF12。 我找到的唯一解决方案是降级Firefox,直到selenium-webdriver更新支持FF12为止。

您可以使用Synaptic软件包管理器完成此操作,方法是选择Firefox软件包,然后单击Package菜单> Force Version>选择早期版本。 然后应用更改。

如果您没有Synaptic,则可以使用apt-get install synaptic进行安装。

更新:2.22中添加了对Firefox 12的支持,2.23中添加了对FF13的支持


非常感谢,帮我省了不少时间。 - Slotos
1
selenium-webdriver对我来说可以在FF12上使用,版本为2.22.0.rc1。 - Gazler

10

因为规范是在无头服务器上运行,所以我遇到了这个错误。这意味着浏览器没有显示器可以渲染。

这篇文章建议使用虚拟 X 服务器 (X Virtual Framebuffer)。这样可以让浏览器在虚拟显示器中渲染。

安装步骤如下:

sudo apt-get install xvfb
sudo apt-get install x11-xkb-utils
sudo apt-get install xfonts-100dpi xfonts-75dpi xfonts-scalable xfonts-cyrillic

然后在命令前面加上 xvfb-run 命令来运行规范测试。

xvfb-run bundle exec rake spec:features

这是引领我找到上述文章的 Stack Overflow 答案,它还提供了一种使用 Xvfb 的替代方法。


1
它是“xfonts-cyrillic”,最后一个c丢失了。 - Federico Gaule Palombarani

3

*/var/lib/gems/1.9.1/gems/selenium-webdriver-2.35.1/lib/selenium/webdriver/firefox/launcher.rb:79:in `connect_until_stable': 在 60 秒内无法获得稳定的 Firefox 连接 (127.0.0.1:7055)(Selenium::WebDriver::Error::WebDriverError)*

我曾经遇到过同样的问题,更新 selenium-webdriver 并没有解决问题(因为它已经是最新版本了)。

后来我发现,在一个SSH会话中运行脚本时,$DISPLAY 没有设置。

问题通过以下命令解决:

export DISPLAY=:0

在SSH会话中启动我的Ruby脚本之前(在X会话的终端中使用echo $DISPLAY来查找需要放入此变量的内容)。

2
bundle update selenium-webdriver

加1,在2015年这对我来说是最容易的修复方法。不需要与硬编码版本号打交道。 - Michael Durrant

1
将“launchy” gem添加到我的应用程序的Gemfile中,可以与FF13.0、Capybara和Selenium v1.8.24一起使用。

1
我怀疑如果这解决了问题,那只是因为添加了launchy导致capbybara的较新版本被引入(例如作为依赖项)。 - Stefan Magnuson

0

这只是对上面每个人所说的内容的重申。我检查了我的gemfile,并确保'selenium-webdriver'没有任何限制,然后运行了'bundle update',它就起作用了。

我在ubuntux64和windows 8 x64上。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接