在 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 回答
我遇到了同样的问题(在Linux上) . 修正:
现在我使用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中 .
似乎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
:然后运行
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更新!
刚刚在CI服务器上遇到这个问题,发现这是因为Firefox没有显示器可供使用 . 我原以为selenium webdriver会让它无需进一步干预就可以工作但事实并非如此 .
将Xvfb添加到混合中使其工作 .
对于运行Cucumber功能的Rails:
然后在features / support / env.rb中
当selenium和firefox版本不兼容时会发生此错误 .
有两种选择 .
gem update selenium-webdriver
如果它仍然失败,那么selenium尚未更新到最新版本 .
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无效 . 我不得不降级Firefox . 另外请记住(至少在Mac OS上),如果你去FireFox菜单 - >关于Firefox,它会自动升级到最新版本 . 不要那样做 .
如果上面的内容现在有效,就像在我的情况下一样,请试一试 .
我在一台机器而不是另一台机器上得到了超时错误 . 这两台机器都是运行完全相同版本的瘦客户机 . 因此排除了不兼容的firefox版本(错误发生在一台机器而不是另一台机器上)
原来,无头使用的端口存在问题 . 还有另一个使用该端口的进程 .
以下为我解决了这个问题:
在 .zshenv 文件中添加以下行
export XVFB_DISPLAY='new-port-number'
然后在终端中运行命令
zsh
以设置更改当我从一个终端开始使用irb时,我遇到了这个问题 . 当我作为该用户运行irb时,我会收到此错误 . 但如果我以root身份运行则不行 . 而不是当我退出到登录用户拥有的shell时 .
对我来说,我已经更新了宝石,但后来需要更新我的包 .
在powershell中,导航到您的目录,然后更新捆绑包:
对于任何使用Vagrant的人来说,如果你登录启用XServer,firefox可以正确启动,这对我来说已经解决了 . vagrant ssh - -X
降级Firefox .
如果已经使用
gem 'headless'
并且现在不需要更新宝石,那么你需要降级firefox .对于Ubuntu(但其他Linux发行版非常相似)你应该:
删除Ubuntu最新版本附带的firefox
您可以通过删除一些相关数据来补充here
现在,安装旧版本的Firefox . 对我来说,版本42.0工作(因为我们的Travis.ci使用它)
打开一个新的终端选项卡并运行您的黄瓜规格/硒规格 .
您现在可以下载最新版本的Firefox并在
/usr/share/applications/
中创建.desktop
文件以从Dock访问它 . 让Selenium默认找到旧版本 . Take this for reference按照ballPointPenguin的建议,我现在可以使用watir-webdriver来检索本地文件,或我本地apache install的htdocs目录中的文件,或者web上的文件:
在更新之前,我收到了错误: