16
Help us understand the problem. What are the problem?

More than 3 years have passed since last update.

posted at

updated at

Organization

「Selenium::WebDriver::Error::WebDriverError: unable to connect to chromedriver 127.0.0.1:9515」または「Selenium::WebDriver::Error::UnknownError: unknown error: cannot find Chrome binary」のエラーに対応する

はじめに

Ruby on Rails 5 速習実践ガイドでのテスト環境構築中にはまりました。

実行環境

Rails (5.2.1)
Ruby (2.5.1)
Selenium-webdriver (3.141)
capybara (3.12.0)
rspec-rails (3.8.1)
chromedriver-helper (2.1.0)

Ubuntu VERSION="18.04.1 LTS (Bionic Beaver)"

発生した問題

vagrant@ubuntu-bionic:/vagrant/taskleaf$ bundle exec rspec spec/system/tasks_spec.rb
Capybara starting Puma...
* Version 3.12.0 , codename: Llamas in Pajamas
* Min threads: 0, max threads: 4
* Listening on tcp://127.0.0.1:36095
F

Failures:

  1) タスク管理機能 一覧表示機能 ユーザーAがログインしているとき ユーザーAが作成したタスクが表示される
     Got 0 failures and 2 other errors:

     1.1) Failure/Error: visit login_path

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



          # ./spec/system/tasks_spec.rb:15:in `block (4 levels) in <top (required)>'

     1.2) Failure/Error: raise Error::WebDriverError, cannot_connect_error_text

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

「unable to connect to chromedriver」への対処法

chromedriver-helperのREADMEにもこのエラーはknown issuesとして紹介されています。
https://github.com/flavorjones/chromedriver-helper

調べているとgem(chromedriver-helper)をアンインストールしてchromedriverを直接ダウンロードすることで動くようになった模様。
https://github.com/SeleniumHQ/selenium/issues/5248

発生した問題2

chromedriverをインストールして再びテストを実行してみると

vagrant@ubuntu-bionic:/vagrant/taskleaf$ bundle exec rspec spec/system/tasks_spec.rb
Capybara starting Puma...
* Version 3.12.0 , codename: Llamas in Pajamas
* Min threads: 0, max threads: 4
* Listening on tcp://127.0.0.1:34647
F

Failures:

  1) タスク管理機能 一覧表示機能 ユーザーAがログインしているとき ユーザーAが作成したタスクが表示される
     Got 0 failures and 2 other errors:

     1.1) Failure/Error: visit login_path

          Selenium::WebDriver::Error::UnknownError:
            unknown error: cannot find Chrome binary
              (Driver info: chromedriver=2.35.528139 (47ead77cb35ad2a9a83248b292151462a66cd881),platform=Linux 4.15.0-36-generic x86_64)



          # ./spec/system/tasks_spec.rb:15:in `block (4 levels) in <top (required)>'

     1.2) Failure/Error: e = error

          Selenium::WebDriver::Error::UnknownError:
            unknown error: cannot find Chrome binary
              (Driver info: chromedriver=2.35.528139 (47ead77cb35ad2a9a83248b292151462a66cd881),platform=Linux 4.15.0-36-generic x86_64)



          # /vagrant/taskleaf/vendor/bundle/ruby/2.5.0/gems/selenium-webdriver-3.141.0/lib/selenium/webdriver/remote/response.rb:69:in `assert_ok'
          # /vagrant/taskleaf/vendor/bundle/ruby/2.5.0/gems/selenium-webdriver-3.141.0/lib/selenium/webdriver/remote/response.rb:32:in `initialize'
          # /vagrant/taskleaf/vendor/bundle/ruby/2.5.0/gems/selenium-webdriver-3.141.0/lib/selenium/webdriver/remote/http/common.rb:84:in `new'
          # /vagrant/taskleaf/vendor/bundle/ruby/2.5.0/gems/selenium-webdriver-3.141.0/lib/selenium/webdriver/remote/http/common.rb:84:in `create_response'
          # /vagrant/taskleaf/vendor/bundle/ruby/2.5.0/gems/selenium-webdriver-3.141.0/lib/selenium/webdriver/remote/http/default.rb:104:in `request'


(略)


          # /home/vagrant/.rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/bundler-1.17.1/lib/bundler/friendly_errors.rb:124:in `with_friendly_errors'
          # /home/vagrant/.rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/bundler-1.17.1/exe/bundle:22:in `<top (required)>'
          # /home/vagrant/.rbenv/versions/2.5.1/bin/bundle:23:in `load'
          # /home/vagrant/.rbenv/versions/2.5.1/bin/bundle:23:in `<main>'
          # 
          #   Showing full backtrace because every line was filtered out.
          #   See docs for RSpec::Configuration#backtrace_exclusion_patterns and
          #   RSpec::Configuration#backtrace_inclusion_patterns for more information.

Finished in 30.98 seconds (files took 41.99 seconds to load)
1 example, 1 failure

Failed examples:

rspec ./spec/system/tasks_spec.rb:21 # タスク管理機能 一覧表示機能 ユーザーAがログインしているとき ユーザーAが作成したタスクが表示される

「unknown error: cannot find Chrome binary」への対処法

chromedriverの公式ドキュメントのsetupの部分に次のように書いてありました。(http://chromedriver.chromium.org/getting-started)
・Ensure Chromium/Google Chrome is installed in a recognized location

仮想環境上にGoogle Chromeがインストールされていなかったのが原因だったと思います。
そこでGoogle Chromeがすでにインストールされているローカル環境(mac)での開発にシフトしました。

  1. mac用のchromedriverをインストール(https://chromedriver.storage.googleapis.com/index.html?path=2.44/)

2 パスが通っている場所にchromedriverを置く

$ echo $PATH
/Users/kentaro/.rbenv/shims:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Users/kentaro/.rbenv/shims:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:

/usr/local/binの下に置きました

3 パスが通っていることを確認

$ which chromedriver
/usr/local/bin/chromedriver

4 テストを実行

$ bundle exec rspec spec/system/tasks_spec.rb
Capybara starting Puma...
* Version 3.12.0 , codename: Llamas in Pajamas
* Min threads: 0, max threads: 4
* Listening on tcp://127.0.0.1:59072
.

Finished in 5.21 seconds (files took 9.85 seconds to load)
1 example, 0 failures

なんとか動いた!

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Sign upLogin
16
Help us understand the problem. What are the problem?