76

While testing scenario by cucumber i'm getting the following error when running rspec tests

unable to obtain stable firefox connection in 60 seconds (127.0.0.1:7055) (Selenium::WebDriver::Error::WebDriverError)

Using ruby (1.9.2) selenium-webdriver (2.27.2) and firefox (19.0)

Using rspec-rails (2.12.1), capybara (2.0.2) and several other gems, Also i have added launchy gem but they don't seem to be a problem. And i am using Windows 7.

4

12 回答 12

89

我有同样的问题(在 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 中。

于 2013-01-27T20:59:17.027 回答
47

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

  1. 访问http://www.seleniumhq.org/download/

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

  3. 在该部分的Ruby语言行中,单击“更改日志”(直接链接)。

  4. 在更改日志中,确定您的 Firefox 版本需要哪个版本的 Selenium。

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

gem 'selenium-webdriver', '2.35.0'

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

更新StackOverflow的 一个回答表明,源代码存储库中的更改日志可能会比 seleniumhq.org 更早更新。Ruby 的存储库更改日志在这里: https ://github.com/SeleniumHQ/selenium/blob/master/rb/CHANGES 。

降级 Firefox

如果您需要在 Ubuntu 12.04 上降级 Firefox,这个答案解释了如何回到 Firefox 20。这里给出了关于切换到任何版本的 Firefox 的更一般的描述。然后使用此答案暂停 Firefox 更新,直到 Selenium 发布适用于更高版本 Firefox 的更新。

就我而言,我降级了 Firefox,只是发现 Selenium Webdriver 最近已更新以处理最新版本,因此请先检查 Selenium 更新!

于 2013-08-15T22:47:28.777 回答
10
bundle update selenium-webdriver
于 2015-01-30T15:32:19.133 回答
9

刚刚在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
于 2015-07-30T15:42:08.017 回答
3

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

有两种选择。

  1. 更新硒:

    gem update selenium-webdriver

    如果仍然失败,则 selenium 尚未更新到最新版本。

  2. 降级firefox版本:

    sudo apt-get purge firefox

    查看可供下载的软件包 apt-cache showpkg firefox

    sudo apt-get install firefox=#older_version#

于 2014-10-10T18:27:19.933 回答
1

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

于 2013-05-21T12:27:01.067 回答
1

如果上述方法现在有效,就像我的情况一样,请试一试。

我在一台机器上而不是另一台机器上遇到超时错误。两台机器都是瘦客户端,运行完全相同的版本。这样就排除了不兼容的 Firefox 版本(错误发生在一台机器上而不是另一台机器上)

原来,headless 使用的端口存在问题。有另一个进程使用该端口。

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

于 2016-08-26T00:58:45.313 回答
0

当我从一个终端启动 irb 时,我遇到了这个问题,我将自己起诉到另一个用户。当我以该用户身份运行 irb 时,我会收到此错误。但如果我以 root 身份运行,则不会。而不是当我退出到登录用户拥有的外壳时。

于 2013-04-27T14:52:28.447 回答
0

对我来说,我已经更新了 gems,但随后需要更新我的包。

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

cd D:\Projects\LazyAutomation
bundle update
于 2014-01-07T11:06:07.797 回答
0

降级火狐。

gem 'headless'如果现在不希望已经使用和更新 gems,那么您需要降级 firefox。

对于 Ubuntu(但其他 linux 发行版会非常相似),您应该:

删除 Ubuntu 最新版本附带的 firefox

sudo apt-get purge firefox

您可以按照此处的说明删除一些相关数据来补充

现在,安装旧版本的 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 并在其中创建一个.desktop文件 /usr/share/applications/以从 Dock 访问它。并让 Selenium 默认查找旧版本。以此作为参考

于 2018-10-04T14:23:27.533 回答
0

对于使用 Vagrant 的任何人,如果您登录启用 XServer firefox 可以正确启动,这为我解决了这个问题。流浪者 ssh -- -X

于 2015-09-26T02:26:04.853 回答
-3

遵循 ballPointPenguin 的建议后,我现在可以使用 watir-webdriver 检索本地文件,或本地 apache 安装的 htdocs 目录中的文件,或网络上的文件:

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)

于 2013-05-17T23:03:57.777 回答