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

cucumber 测试场景时,我在运行 rspec 测试时遇到以下错误

无法在60秒内获得稳定的firefox连接(127.0.0.1:7055)(Selenium :: WebDriver :: Error :: WebDriverError)

使用 ruby (1.9.2) selenium-webdriver (2.27.2)firefox (19.0)

使用 rspec-rails (2.12.1)capybara (2.0.2) 和其他几个宝石,我也添加了 launchy gem,但它们似乎没有问题 . 我正在使用 Windows 7 .

回答(12)

2 years ago

我遇到了同样的问题(在Linux上) . 修正:

gem update selenium-webdriver

现在我使用ruby 1.9.3-p286,selenium-webdriver 2.29.0,firefox 18.0以及rspec-rails 2.9.0,capybara 1.1.2和capybara-webkit 0.12.1

为了安全起见,我将selenium-webdriver 2.29.0添加到我的Gemfile中 .

2 years ago

似乎Selenium Webdriver经常更新以跟上Firefox . 但是你怎么知道你需要哪个版本?希望这个过程即使在版本更改时也能正常工作:

  • 转到http://www.seleniumhq.org/download/ .

  • 向下滚动到 Selenium Client & WebDriver Language Bindings .

  • 在该部分的 Ruby 语言行中,单击"Change Log"(direct link) .

  • 在更改日志中,确定您的Firefox版本所需的Selenium版本 .

如果您使用的是Bundler,请运行 bundle show selenium-webdriver 以查看您拥有的版本 . 要更新,例如更新到2.35.0,请将此行添加到 Gemfile

gem 'selenium-webdriver', '2.35.0'

然后运行 bundle update 进行安装 . 如果您正在使用Spork,请记住在重新运行测试之前重新启动它 .

Update 一个StackOverflow answer表示源代码存储库中的更改日志可能比seleniumhq.org更新 . Ruby的存储库更改日志位于:https://github.com/SeleniumHQ/selenium/blob/master/rb/CHANGES .

降级Firefox

如果您需要在Ubuntu 12.04上降级Firefox,this answer解释了如何返回到Firefox 20.有关切换到任何版本Firefox的方法的更一般描述为here . 然后使用this answer将Firefox更新置于保持状态,直到Selenium发布可与更高版本的Firefox一起使用的更新 .

在我的情况下,我降级Firefox仅发现Selenium Webdriver最近已更新以处理最新版本,因此请先检查Selenium更新!

2 years ago

bundle update selenium-webdriver

2 years ago

刚刚在CI服务器上遇到这个问题,发现这是因为Firefox没有显示器可供使用 . 我原以为selenium webdriver会让它无需进一步干预就可以工作但事实并非如此 .

将Xvfb添加到混合中使其工作 .

对于运行Cucumber功能的Rails:

gem 'headless'

然后在features / support / env.rb中

Before do
  if Capybara.current_driver == :selenium
    require 'headless'

    headless = Headless.new
    headless.start
  end
end

2 years ago

当selenium和firefox版本不兼容时会发生此错误 .

有两种选择 .

  • 更新selenium:

gem update selenium-webdriver

如果它仍然失败,那么selenium尚未更新到最新版本 .

  • 降级firefox的版本:

sudo apt-get purge firefox

要查看可用的下载包 apt-cache showpkg firefox

sudo apt-get install firefox=#older_version#

2 years ago

对我有用的神奇组合是Firefox 19.0和selenium web-driver 2.32.1(在撰写本文时最新) . Firefox 20.x和21.x无效 . 我不得不降级Firefox . 另外请记住(至少在Mac OS上),如果你去FireFox菜单 - >关于Firefox,它会自动升级到最新版本 . 不要那样做 .

2 years ago

如果上面的内容现在有效,就像在我的情况下一样,请试一试 .

我在一台机器而不是另一台机器上得到了超时错误 . 这两台机器都是运行完全相同版本的瘦客户机 . 因此排除了不兼容的firefox版本(错误发生在一台机器而不是另一台机器上)

原来,无头使用的端口存在问题 . 还有另一个使用该端口的进程 .

以下为我解决了这个问题:
.zshenv 文件中添加以下行
export XVFB_DISPLAY='new-port-number'
然后在终端中运行命令 zsh 以设置更改

2 years ago

当我从一个终端开始使用irb时,我遇到了这个问题 . 当我作为该用户运行irb时,我会收到此错误 . 但如果我以root身份运行则不行 . 而不是当我退出到登录用户拥有的shell时 .

2 years ago

对我来说,我已经更新了宝石,但后来需要更新我的包 .

在powershell中,导航到您的目录,然后更新捆绑包:

cd D:\Projects\LazyAutomation
bundle update

2 years ago

对于任何使用Vagrant的人来说,如果你登录启用XServer,firefox可以正确启动,这对我来说已经解决了 . vagrant ssh - -X

2 years ago

降级Firefox .

如果已经使用 gem 'headless' 并且现在不需要更新宝石,那么你需要降级firefox .

对于Ubuntu(但其他Linux发行版非常相似)你应该:

删除Ubuntu最新版本附带的firefox

sudo apt-get purge firefox

您可以通过删除一些相关数据来补充here

现在,安装旧版本的Firefox . 对我来说,版本42.0工作(因为我们的Travis.ci使用它)

$ export FIREFOX_SOURCE_URL='https://download.mozilla.org/?product=firefox-42.0&lang=en-US&os=linux64'
$ wget --no-verbose -O /tmp/firefox-42.0.tar.bz2 $FIREFOX_SOURCE_URL
$ tar xvC ~/. -f /tmp/firefox-42.0.tar.bz2
ln -s ~/firefox/firefox ~/bin/firefox

打开一个新的终端选项卡并运行您的黄瓜规格/硒规格 .

您现在可以下载最新版本的Firefox并在 /usr/share/applications/ 中创建 .desktop 文件以从Dock访问它 . 让Selenium默认找到旧版本 . Take this for reference

2 years ago

按照ballPointPenguin的建议,我现在可以使用watir-webdriver来检索本地文件,或我本地apache install的htdocs目录中的文件,或者web上的文件:

1) file:///Users/me/jquery_programs/1.htm
2) 'http://localhost:8080/my.html'
3) 'http://www.google.com'

require 'watir-webdriver'

browser = Watir::Browser.new :firefox
browser.goto 'http://localhost:8080/my.html'

在更新之前,我收到了错误:

`connect_until_stable':无法在60秒内获得稳定的firefox连接(127.0.0.1:7055)(Selenium :: WebDriver :: Error :: WebDriverError)