首页 文章

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

提问于
浏览
74

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 回答

  • 46

    我遇到了同样的问题(在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中 .

  • 3

    似乎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更新!

  • 0
    bundle update selenium-webdriver
    
  • 0

    刚刚在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
    
  • 0

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

  • 10

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

  • 87

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

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

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

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

  • 0

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

  • 1

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

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

    cd D:\Projects\LazyAutomation
    bundle update
    
  • 9

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

  • -3

    降级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

  • 1

    按照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)

相关问题