「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
```

なんとか動いた！