ruby on rails -无法在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宝石,但他们似乎不是一个问题。我使用Windows 7 .

我有同样的问题(在Linux上)。固定:

gem update selenium-webdriver

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

我添加硒webdriver 2.29.0到我的Gemfile是安全的。

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

  1. 进入http://www.seleniumhq.org/download/。

  2. 向下滚动到Selenium Client &WebDriver语言绑定

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

  4. 在Change Log中,确定您的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更新!

bundle update selenium-webdriver

刚刚在CI服务器上遇到这个问题,发现这是因为Firefox没有显示可用。我曾认为selenium webdriver将使其工作而无需进一步干预,但事实并非如此。

在混合物中加入Xvfb使其有效。

对于Rails运行Cucumber的特性:

gem 'headless'

then in features/support/env.rb

Before do
  if Capybara.current_driver == :selenium
    require 'headless'
    headless = Headless.new
    headless.start
  end
end

当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#

对我来说最神奇的组合是Firefox 19.0和selenium web driver 2.32.1(在撰写本文时是最新的)。Firefox 20。X和21。X不起作用。我不得不降级火狐浏览器。另外请记住(至少在Mac OS上),如果你进入FireFox菜单->关于FireFox,它会自动升级到最新版本。不要那样做。

如果上面的工作现在,像我的情况,给这个尝试。

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

结果是headless使用的端口有问题。有另一个进程使用该端口。

下面为我修复了这个问题:
中添加以下行。zshenv 文件
export XVFB_DISPLAY='new-port-number'
然后在终端中运行命令zsh来设置change

当我从一个终端启动irb时,我已经将自己susued到另一个用户。当我以那个用户身份运行irb时,我会得到这个错误。但如果我以root身份跑就不会了。当我退出到登录用户拥有的shell时就不会了。

对于我来说,我已经更新了gems,但接下来需要更新我的bundle。

在powershell中,导航到你的目录,然后更新bundle:

cd D:ProjectsLazyAutomation
bundle update

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

降级Firefox。

如果已经使用gem 'headless'和更新gems是不可取的,那么你需要降级firefox。

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

删除Ubuntu最新版本自带的firefox

sudo apt-get purge firefox

您可以像这里解释的那样删除一些相关数据作为补充

现在,安装旧版本的Firefox。对我来说,是42.0版就像我们的特拉维斯。

$ 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

打开一个新的终端标签,运行你的cucumber specs/selenium specs。

您现在可以下载最新版本的Firefox,并在/usr/share/applications/中创建.desktop文件,以便从dock访问它。并让Selenium在默认情况下查找旧版本。参考

在遵循ballPointPenguin的建议之后,我现在可以使用watir-webdriver来检索本地文件,或我本地apache安装的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':无法获得稳定的firefox连接60秒(127.0.0.1:7055)(硒::WebDriver::错误::WebDriverError)

相关内容

  • 没有找到相关文章

最新更新