无法连接到Chromedriver。

39

我使用capybara和selenium测试我的rails项目。 当我执行测试脚本时,它会出现以下错误

 Selenium::WebDriver::Error::WebDriverError:
   Could not find Firefox binary (os=macosx). Make sure Firefox is installed or set the path manually with Selenium::WebDriver::Firefox::Binary.path=

我谷歌了一下如何使用Google Chrome作为测试浏览器而不是Firefox

但它出现了其他错误,例如

Selenium::WebDriver::Error::WebDriverError:
   unable to connect to chromedriver http://127.0.0.1:9515

你使用的Firefox和Chrome版本是什么?它们安装在哪个位置? - Arran
我通过Brew安装了Firefox,Firefox的版本是“Firefox: 21.0”。 - tsinghan
你能同时发布你的Gemfile和Cucumber环境文件吗? - RobertH
10个回答

58

我遇到了完全相同的问题。对我有用的是使用“webdrivers”宝石。我的Gemfile的一部分如下:

我也遇到了完全相同的问题。我解决这个问题的方法是使用“webdrivers” gem。我的Gemfile的一部分如下:

group :development, :test do
  gem 'rspec-rails'
  gem 'capybara'
  gem 'webdrivers'
end

4
жӣҙж–°selenium-webdriverд»Һ 3.8.0 еҲ° 3.9.0 еҗҺеҮәзҺ°дәҶй”ҷиҜҜгҖӮж·»еҠ chromedriver-helperе®қзҹіи§ЈеҶідәҶиҝҷдёӘй—®йўҳгҖӮ - smile2day
1
注意:chromedriver-helper已于2019年3月31日停用,请更新使用“webdrivers”宝石代替。 请参见https://github.com/flavorjones/chromedriver-helper。 - Kaka Ruto

11

在 Mac OS 上,使用 watir-webdriver 和 Safari 可以正常工作。

browser = Watir::Browser.new :safari

如果您想使用Chrome,请确保已安装,另外您需要安装mac os开发者工具。

xcode-select --install

同时使用brew安装chromedriver

brew install chromedriver

在Linux系统上,我在我的Ubuntu 12.04测试服务器上遇到了同样的错误。问题出在我没有用超级用户权限安装chrome本身,应该像这样安装:

wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | sudo apt-key add -
sh -c 'echo "deb http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google.list'
apt-get update
apt-get install google-chrome-stable

安装chromedriver(使用适合您系统和版本的正确路径):

wget http://chromedriver.storage.googleapis.com/2.7/chromedriver_linux64.zip
unzip chromedriver_linux64.zip
cp chromedriver /usr/local/bin
chmod +x /usr/local/bin/chromedriver 

之后我建议您在无头模式下使用watir-webdriver

require 'watir-webdriver'
require 'headless'
headless = Headless.new
headless.start

browser = Watir::Browser.new :chrome
browser.goto 'http://google.com'

...

browser.close
headless.destroy

祝你好运!


1
这与在capybara中运行测试有什么关系?watir-webdriver是完全不同的框架... - zmorris

10

我也在Ubuntu 12.10上运行,遇到了相同的错误信息:

unable to connect to chromedriver http://127.0.0.1:9515

即使我已经正确下载和安装,它仍然无法正常工作。 我甚至尝试使用chromedriver-helper gem。 所以我手动运行了chromedriver(/usr/bin/chromedriver),并发现了两件事:

1)我缺少libnss3软件包依赖项,可以使用sudo apt-get install libnss3解决。

2)chromedriver 2.9版本(截至2014年2月最新版本)需要chrome>版本31,而我只有v25,可以使用sudo apt-get --only-upgrade install google-chrome-stable解决。


2

Mac OSX 10.9.4,JRuby 1.7.6,Selenium-Webdriver 2.42.0。已经安装了ChromeDriver 2.10。

got unable to connect to chromedriver http://127.0.0.1:9515
(Selenium::WebDriver::Error::WebDriverError)

我找到了这个链接->https://code.google.com/p/selenium/issues/detail?id=6574#c3 我们已经修复了webdriver/chrome/service.rb文件,包含以下内容:
@process.io.stdout = Tempfile.new("chromdriver-output")
before @process.start

解决了问题 - 天哪!


2

你使用的是OS X操作系统吗?使用Brew工具?错过了说明文档吗?

$>> brew info chromedriver

chromedriver: stable 2.20
...
==> Caveats
To have launchd start chromedriver at login:
  ln -sfv /usr/local/opt/chromedriver/*.plist ~/Library/LaunchAgents
Then to load chromedriver now:
  launchctl load ~/Library/LaunchAgents/homebrew.mxcl.chromedriver.plist

跟着它们走 :) 对我很有效。同时打开Chrome可能会有所帮助,它可能需要更新。


如果有人需要,我分享一下我的经验 - 对我而言,相反的情况发生了 - 我不得不停止它(我找到了进程并将其杀死),并且还要删除一些其他的二进制文件/ shims,我用 which chromedriver 找到它们,直到只剩下通过brew安装的一个(我的是 /usr/local/bin/chromedriver )。然后再次运行我的测试,这次它们成功了! - jackocnr

2

Mac OS X 10.10与JRuby 1.7.12

unable to connect to chromedriver http://127.0.0.1:9515

发现了这个-> https://code.google.com/p/selenium/issues/detail?id=6574#c3
module Selenium
  module WebDriver
    module Chrome
      class Service
        alias_method :old_start, :start
        def start
          @process.io.stdout = Tempfile.new("chromdriver-output")
          old_start
        end
      end
    end
  end
end

谢谢您的回答。我刚刚将其更改为@process.io.stderr = 以获得有用的错误信息。 - nates

1
我在配置Circle CI时遇到了一些问题。
  • 在Gemfile中添加Xvfb接口

gem 'headless', '~> 2.3.1'

  • 在spec/rails_spec.rb中添加以下内容

if ENV['HEADLESS'] == 'on' require 'headless' headless = Headless.new headless.start end

因此,您可以通过以下方式运行rspec: HEADLESS=on bundle exec rspec

以下是解决此问题的可行配置示例:

circle.yml

  • 重新安装Chrome
  • 安装ChromeDriver
  • 安装Selenium

这里有一个非常好的手册,介绍如何完成以上步骤: https://gist.github.com/ziadoz/3e8ab7e944d02fe872c3454d17af31a5


关于 Firefox 错误 - 只需要安装 Firefox:sudo apt-get install firefox - Alex Strizhak

1
这对我很有用:
  • 更新chrome 
 chromedriver-update 2.42
  • 检查版本 
 chromedriver -v
  • 搜索Chromedriver 
 which chromedriver
  • 删除chromedriver 
 rm which chromedriver
  • 删除Chromedriver并安装新的 
 1- rm chromedriver并下载chromedriver 
 2- 解压chromedriver_mac64\ (2).zip 
 3- echo $APTH(检查可执行二进制文件的路径)
    
 4- mv chromedriver /usr/local/bin(将其放置在bin中)

1

ubuntu-14-04-x64

无法连接到chromedriver 127.0.0.1:9515

$ chromedriver -v
ChromeDriver 2.33.506092

$ which chromedriver
/usr/local/bin/chromedriver

 wget -N http://chromedriver.storage.googleapis.com/2.33/chromedriver_linux64.zip

    unzip chromedriver_linux64.zip

    chmod +x chromedriver

    sudo mv -f chromedriver /usr/local/share/chromedriver

    sudo ln -s /usr/local/share/chromedriver /usr/local/bin/chromedriver

    sudo ln -s /usr/local/share/chromedriver /usr/bin/chromedriver
___
    Capybara.register_driver(:headless_chrome) do |app|
      capabilities = Selenium::WebDriver::Remote::Capabilities.chrome(
       chromeOptions: { args: %w[headless disable-gpu --screen-size=1024x640] }
      )

      Capybara::Selenium::Driver.new(
       app,
       browser: :chrome,
       desired_capabilities: capabilities
      )
end

Capybara.javascript_driver = :headless_chrome
Capybara.current_driver = :headless_chrome

0
如果上述解决方案无效,请尝试创建另一个 gemset 并执行测试。
rvm gemset create <your_gemset_name>
rvm gemset use <your_gemset_name>
gem install bundler
bundle install

因为这个问题通常发生在两个版本的selenium-webdriver之间存在冲突时。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接