35

我使用 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=

我谷歌如何使用谷歌浏览器而不是 Firefox 作为测试浏览器

但它会发生其他错误,例如

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

10 回答 10

57

我有完全相同的问题。对我有用的是使用“webdrivers”gem。我的 gemfile 的一部分如下所示:

group :development, :test do
  gem 'rspec-rails'
  gem 'capybara'
  gem 'webdrivers'
end
于 2016-04-05T23:49:37.140 回答
11

在 Mac 操作系统上

它适用于 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

祝你好运!

于 2013-11-28T22:41:32.710 回答
9

在 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

于 2014-02-14T07:43:20.423 回答
2

mac osx 10.9.4, jruby 1.7.6, selenium-webdriver 2.42.0, brew install 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

这解决了这个问题 - crikey!

于 2014-08-27T02:54:09.710 回答
2

mac osx 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
于 2015-02-19T16:53:27.857 回答
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,它可能需要更新。

于 2015-10-26T22:28:47.490 回答
1

我在配置circle ci时遇到了一些问题

  • 添加到 Xvfb 的 Gemfile 接口

gem 'headless', '~> 2.3.1'

  • 添加到规范/rails_spec.rb

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

所以运行你的 rspec HEADLESS=on bundle exec rspec

解决此问题的工作配置示例:

圆圈.yml

  • 重新安装 Chrome
  • 安装 ChromeDriver
  • 安装硒

这是一个很好的手册如何做到这一点: https ://gist.github.com/ziadoz/3e8ab7e944d02fe872c3454d17af31a5

于 2017-08-01T21:20:17.300 回答
1

这对我有用:

  • 更新 chrome chromedriver-update 2.42
  • 检查版本 chromedriver -v
  • 搜索 Chromedriver 哪个 chromedriver
  • 删除 chromedriver rmwhich chromedriver
  • 删除 Chromedriver 并安装新的 1- rm chromedriver 并下载 chromedriver 2- unzip chromedriver_mac64\ (2).zip 3- echo $APTH(检查可执行 bin 的路径)
    
 4- mv chromedriver /usr/local/bin (放置到垃圾桶)
于 2018-10-03T18:22:25.030 回答
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
于 2017-11-09T13:12:25.893 回答
0

如果上述解决方案不起作用,请尝试创建另一个 gemset 并执行测试

rvm gemset create <your_gemset_name>
rvm gemset use <your_gemset_name>
gem install bundler
bundle install

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

于 2017-09-20T13:21:41.827 回答