运行rspec测试时出现以下错误
在rails中无法在60秒内获得稳定的firefox连接 (127.0.0.1:7055)
使用最新的ruby(1.9.2)和firefox(6.0)
使用rspec-rails、capybara和其他一些gem,但它们似乎不是问题。在另一个环境(linux)中这些测试可以正常运行。
运行rspec测试时出现以下错误
在rails中无法在60秒内获得稳定的firefox连接 (127.0.0.1:7055)
使用最新的ruby(1.9.2)和firefox(6.0)
使用rspec-rails、capybara和其他一些gem,但它们似乎不是问题。在另一个环境(linux)中这些测试可以正常运行。
[更新-这在2015年对我仍然有效|mdurrant|]
我最近遇到了这个问题。
你应该升级到capybara v1.0.1以使用正确的selenium webdriver。
为确保生效,我添加了:
gem 'selenium-webdriver', '2.25.0'
在我的 Gemfile 中。
重要提示:
selenium-webdriver
gem是针对每个Firefox的后续版本进行更新和发布的。目前,需要版本2.25.0
才能支持Firefox 15。
在Ubuntu上,我无法使其在Firefox 10中工作。尝试使用Chrome可以解决这个问题。
spec_helper.rb:
Capybara.register_driver :selenium_chrome do |app|
Capybara::Selenium::Driver.new(app, :browser => :chrome)
end
在您的规范中:
Capybara.current_driver = :selenium_chrome
... tests ...
Capybara.use_default_driver
brew install chromedriver
命令进行安装 ChromeDriver。 - WillCapybara.javascript_driver = :selenium_chrome
(而不是设置 current_driver
)。 - Tim Scott针对在Firefox 12上出现此问题的用户,当前版本的selenium webdriver(2.21)不支持FF12。 我找到的唯一解决方案是降级Firefox,直到selenium-webdriver更新支持FF12为止。
您可以使用Synaptic软件包管理器完成此操作,方法是选择Firefox软件包,然后单击Package菜单> Force Version>选择早期版本。 然后应用更改。
如果您没有Synaptic,则可以使用apt-get install synaptic进行安装。
更新:2.22中添加了对Firefox 12的支持,2.23中添加了对FF13的支持
因为规范是在无头服务器上运行,所以我遇到了这个错误。这意味着浏览器没有显示器可以渲染。
这篇文章建议使用虚拟 X 服务器 (X Virtual Framebuffer)。这样可以让浏览器在虚拟显示器中渲染。
安装步骤如下:
sudo apt-get install xvfb
sudo apt-get install x11-xkb-utils
sudo apt-get install xfonts-100dpi xfonts-75dpi xfonts-scalable xfonts-cyrillic
然后在命令前面加上 xvfb-run
命令来运行规范测试。
xvfb-run bundle exec rake spec:features
这是引领我找到上述文章的 Stack Overflow 答案,它还提供了一种使用 Xvfb 的替代方法。
*/var/lib/gems/1.9.1/gems/selenium-webdriver-2.35.1/lib/selenium/webdriver/firefox/launcher.rb:79:in `connect_until_stable': 在 60 秒内无法获得稳定的 Firefox 连接 (127.0.0.1:7055)(Selenium::WebDriver::Error::WebDriverError)*
我曾经遇到过同样的问题,更新 selenium-webdriver
并没有解决问题(因为它已经是最新版本了)。
后来我发现,在一个SSH会话中运行脚本时,$DISPLAY
没有设置。
问题通过以下命令解决:
export DISPLAY=:0
echo $DISPLAY
来查找需要放入此变量的内容)。bundle update selenium-webdriver
这只是对上面每个人所说的内容的重申。我检查了我的gemfile,并确保'selenium-webdriver'没有任何限制,然后运行了'bundle update',它就起作用了。
我在ubuntux64和windows 8 x64上。
selenium-webdriver
的版本号,而是在需要更新时运行bundle update selenium-webdriver
。 - Jason Swett