質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

89.21%

ChromeDriverとChromeのバージョンの調整方法について。

受付中

回答 1

投稿 編集

  • 評価
  • クリップ 1
  • VIEW 5,136

amedama

score 36

前提・実現したいこと

現在、Railsを勉強しています。
現場で使えるRuby on Rails 5 速習実践ガイドという教材を進めています。
aws cloud9 を使ってRailsTutorialをしていたため、そのままawsで勉強を続けています。

その中で、新しくRSpecを用いてコードを書いています。
テストを作成し、rspecを実行したところで以下のエラーメッセージが出ました。

発生している問題・エラーメッセージ

Selenium::WebDriver::Error::UnknownError: unknown error: cannot find Chrome binary


これについては以下のページの内容を参考にしました。
参考: https://kuracux.hatenablog.jp/entry/2018/12/30/182617
Amazon LinuxにChromeが入っていないことが原因だと考えられます。
下記コマンドを実行し、インストールを行ないましょう。

$ curl https://intoli.com/install-google-chrome.sh | bash

これで解決したと思ったのですが、この後再度rspecを実行すると、

Selenium::WebDriver::Error::SessionNotCreatedError:
session not created: This version of ChromeDriver only supports Chrome version 74
(Driver info: chromedriver=74.0.3729.6 (255758eccf3d244491b8a1317aa76e1ce10d57e9-refs/branch-heads/3729@{#29}),platform=Linux 4.14.97-74.72.amzn1.x86_64 x86_64)


と出て、テストが実行できず、詰まってしまいました。

試したこと

エラー文から察するに
chromedriverとChromeのバージョンが違うので、それをあわせることが必要という解釈をしました。
自分なりに調べて、以下のページなどを参考に、Chromeのバージョンを74にあげる方法を模索しましたが、できませんでした。

参考:CircleCIのChromeとchromedriver-helperのchromedriverのバージョンを揃える
https://qiita.com/IYD37/items/a5a9eee71dde858d19d3

参考:CircleCIのChromeを最新版に
https://ryotah.hatenablog.com/entry/2017/01/16/214215

OSなど何か前提条件が自分と違うため、上手くいかなかったと思います。
ex.apt-getが使えないなど。

補足情報(FW/ツールのバージョンなど)

環境設定やOSについての知識が乏しく、この問題を解決するために必要な情報を判断することができなかったため、
自分がわかる範囲で手がかりになりそうな情報を以下に記載しました。

開発環境            AWS cloud9
データベース          PostgreSQL
Amazon Linux のバージョン  Amazon Linux AMI release 2018.03 

GemFile

source 'https://rubygems.org'
git_source(:github) { |repo| "https://github.com/#{repo}.git" }

ruby '2.5.1'

# Bundle edge Rails instead: gem 'rails', github: 'rails/rails'
gem 'rails', '~> 5.2.1'
# Use postgresql as the database for Active Record
gem 'pg', '>= 0.18', '< 2.0'
# Use Puma as the app server
gem 'puma', '~> 3.11'
# Use SCSS for stylesheets
gem 'sass-rails', '~> 5.0'
# Use Uglifier as compressor for JavaScript assets
gem 'uglifier', '>= 1.3.0'
# See https://github.com/rails/execjs#readme for more supported runtimes
# gem 'mini_racer', platforms: :ruby

# Use CoffeeScript for .coffee assets and views
gem 'coffee-rails', '~> 4.2'
# Turbolinks makes navigating your web application faster. Read more: https://github.com/turbolinks/turbolinks
gem 'turbolinks', '~> 5'
# Build JSON APIs with ease. Read more: https://github.com/rails/jbuilder
gem 'jbuilder', '~> 2.5'
# Use Redis adapter to run Action Cable in production
# gem 'redis', '~> 4.0'
# Use ActiveModel has_secure_password
gem 'bcrypt', '~> 3.1.7'

# Use ActiveStorage variant
# gem 'mini_magick', '~> 4.8'

# Use Capistrano for deployment
# gem 'capistrano-rails', group: :development

# Reduces boot times through caching; required in config/boot.rb
gem 'bootsnap', '>= 1.1.0', require: false

group :development, :test do
  # Call 'byebug' anywhere in the code to stop execution and get a debugger console
  gem 'byebug', platforms: [:mri, :mingw, :x64_mingw]
  gem 'factory_bot_rails', '~> 4.11'
end

group :development do
  # Access an interactive console on exception pages or by calling 'console' anywhere in the code.
  gem 'web-console', '>= 3.3.0'
  gem 'listen', '>= 3.0.5', '< 3.2'
  # Spring speeds up development by keeping your application running in the background. Read more: https://github.com/rails/spring
  gem 'spring'
  gem 'spring-watcher-listen', '~> 2.0.0'
end

group :test do
  # Adds support for Capybara system testing and selenium driver
  gem 'capybara', '>= 2.15'
  gem 'selenium-webdriver'
  # Easy installation and use of chromedriver to run system tests with Chrome
  gem 'chromedriver-helper'
  gem 'rspec-rails', '~> 3.7'
end

# Windows does not include zoneinfo files, so bundle the tzinfo-data gem
gem 'tzinfo-data', platforms: [:mingw, :mswin, :x64_mingw, :jruby]
gem 'slim-rails'
gem 'html2slim'
gem 'bootstrap'
gem 'rails_autolink'

教材と違う環境で進めているため、そもそも間違った環境を作ってしまっているのかもしれません。
また、ひとつ気がかりなのは、教材で出てきた「windowsであればUbuntuをインストールする」というところを飛ばした点です。
awsで勉強を進めていくのには関係がないんじゃないかなと考えたため、飛ばしましたが正しい判断だったのでしょうか...

その他解決に必要な情報があれば、教えていただけると幸いです。
まとまっていない質問になりましたが、どうぞよろしくお願いします。

最後まで読んでくださりありがとうございます。
お力添えよろしくお願いします。

 変更後

連絡お待たせしました。
ご助言通りに試した後、
Rspecを実行したところ、以下のエラーが起きました。

$  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:33295
/home/ec2-user/.rvm/gems/ruby-2.5.1/bin/rspec: No such file or directory - google-chrome
/home/ec2-user/.rvm/gems/ruby-2.5.1/bin/rspec: No such file or directory - google-chrome
F

Failures:

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

     1.1) Failure/Error: visit login_path

          NoMethodError:
            undefined method `chomp' for nil:NilClass



          # /home/ec2-user/.rvm/gems/ruby-2.5.1/gems/webdrivers-3.7.0/lib/webdrivers/chromedriver.rb:69:in `chrome_version'
          # /home/ec2-user/.rvm/gems/ruby-2.5.1/gems/webdrivers-3.7.0/lib/webdrivers/chromedriver.rb:55:in `release_version'
          # /home/ec2-user/.rvm/gems/ruby-2.5.1/gems/webdrivers-3.7.0/lib/webdrivers/chromedriver.rb:19:in `latest_version'
          # /home/ec2-user/.rvm/gems/ruby-2.5.1/gems/webdrivers-3.7.0/lib/webdrivers/common.rb:37:in `desired_version'
          # /home/ec2-user/.rvm/gems/ruby-2.5.1/gems/webdrivers-3.7.0/lib/webdrivers/common.rb:16:in `update'
          # /home/ec2-user/.rvm/gems/ruby-2.5.1/gems/webdrivers-3.7.0/lib/webdrivers/selenium.rb:7:in `driver_path'
          # /home/ec2-user/.rvm/gems/ruby-2.5.1/gems/selenium-webdriver-3.14.0/lib/selenium/webdriver/chrome/driver.rb:38:in `initialize'
          # /home/ec2-user/.rvm/gems/ruby-2.5.1/gems/selenium-webdriver-3.14.0/lib/selenium/webdriver/common/driver.rb:44:in `new'
          # /home/ec2-user/.rvm/gems/ruby-2.5.1/gems/selenium-webdriver-3.14.0/lib/selenium/webdriver/common/driver.rb:44:in `for'
          # /home/ec2-user/.rvm/gems/ruby-2.5.1/gems/selenium-webdriver-3.14.0/lib/selenium/webdriver.rb:86:in `for'
          # /home/ec2-user/.rvm/gems/ruby-2.5.1/gems/capybara-3.6.0/lib/capybara/selenium/driver.rb:31:in `browser'
          # /home/ec2-user/.rvm/gems/ruby-2.5.1/gems/capybara-3.6.0/lib/capybara/selenium/driver.rb:58:in `visit'
          # /home/ec2-user/.rvm/gems/ruby-2.5.1/gems/capybara-3.6.0/lib/capybara/session.rb:269:in `visit'
          # /home/ec2-user/.rvm/gems/ruby-2.5.1/gems/capybara-3.6.0/lib/capybara/dsl.rb:51:in `block (2 levels) in <module:DSL>'
          # ./spec/system/tasks_spec.rb:13:in `block (4 levels) in <top (required)>'

     1.2) Failure/Error:
            ver = case platform
                    when 'win'
                      chrome_on_windows
                    when /linux/
                      chrome_on_linux
                    when 'mac'
                      chrome_on_mac
                    else
                      raise NotImplementedError, 'Your OS is not supported by webdrivers gem.'
                  end.chomp

          NoMethodError:
            undefined method `chomp' for nil:NilClass



          # /home/ec2-user/.rvm/gems/ruby-2.5.1/gems/webdrivers-3.7.0/lib/webdrivers/chromedriver.rb:69:in `chrome_version'
          # /home/ec2-user/.rvm/gems/ruby-2.5.1/gems/webdrivers-3.7.0/lib/webdrivers/chromedriver.rb:55:in `release_version'
          # /home/ec2-user/.rvm/gems/ruby-2.5.1/gems/webdrivers-3.7.0/lib/webdrivers/chromedriver.rb:19:in `latest_version'
          # /home/ec2-user/.rvm/gems/ruby-2.5.1/gems/webdrivers-3.7.0/lib/webdrivers/common.rb:37:in `desired_version'
          # /home/ec2-user/.rvm/gems/ruby-2.5.1/gems/webdrivers-3.7.0/lib/webdrivers/common.rb:16:in `update'
          # /home/ec2-user/.rvm/gems/ruby-2.5.1/gems/webdrivers-3.7.0/lib/webdrivers/selenium.rb:7:in `driver_path'
          # /home/ec2-user/.rvm/gems/ruby-2.5.1/gems/selenium-webdriver-3.14.0/lib/selenium/webdriver/chrome/driver.rb:38:in `initialize'
          # /home/ec2-user/.rvm/gems/ruby-2.5.1/gems/selenium-webdriver-3.14.0/lib/selenium/webdriver/common/driver.rb:44:in `new'
          # /home/ec2-user/.rvm/gems/ruby-2.5.1/gems/selenium-webdriver-3.14.0/lib/selenium/webdriver/common/driver.rb:44:in `for'
          # /home/ec2-user/.rvm/gems/ruby-2.5.1/gems/selenium-webdriver-3.14.0/lib/selenium/webdriver.rb:86:in `for'
          # /home/ec2-user/.rvm/gems/ruby-2.5.1/gems/capybara-3.6.0/lib/capybara/selenium/driver.rb:31:in `browser'
          # /home/ec2-user/.rvm/gems/ruby-2.5.1/gems/capybara-3.6.0/lib/capybara/selenium/driver.rb:112:in `save_screenshot'
          # /home/ec2-user/.rvm/gems/ruby-2.5.1/gems/capybara-3.6.0/lib/capybara/session.rb:709:in `block in save_screenshot'
          # /home/ec2-user/.rvm/gems/ruby-2.5.1/gems/capybara-3.6.0/lib/capybara/session.rb:709:in `tap'
          # /home/ec2-user/.rvm/gems/ruby-2.5.1/gems/capybara-3.6.0/lib/capybara/session.rb:709:in `save_screenshot'

Finished in 0.91785 seconds (files took 1.09 seconds to load)
1 example, 1 failure

Failed examples:

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

 

なるべく、自力で解決したいのですが、解決の糸口が見えません。
どこを修正すればよいかご助言いただけますか?

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • asm

    2019/03/25 22:26

    $ google-chrome-stable -version
    を実行した結果はどうなっていますか?

    キャンセル

  • amedama

    2019/03/25 22:36

    ありがとうございます。
    Google Chrome 73.0.3683.86
    となっています。

    キャンセル

回答 1

0

gem 'chromedriver-helper'

githubをみると

Deprecated in favor of the webdrivers gem.

となっています。

$HOME/.chromedriver-helperディレクトリがあるのならば削除し

Gemfileには代わりにgem "webdrivers", "~> 3.0"を記載しましょう。

こちらにはchromeのバージョンから使用するchromedriverのバージョンを決定する仕組みがあるようです。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2019/03/26 13:16

    こんにちは。
    返信遅くなり申し訳ありません。

    ①再度確認しましたが、コンソールは一つで行っています。

    ②環境変数がキャッシュされているかどうかについては以下を試してみました。

    $ spring stop
    Spring is not running

    $ ps aux | grep spring
    ec2-user 5593 0.0 0.2 110516 2052 pts/1 S+ 12:59 0:00 grep --color=auto spring

    ③AWSにgoogle chromeをインストールするつもりでなにかを間違えてlocalに入れてたパターン はどうすれば起こってしまうのでしょうか?
    また、それを確認する方法はございますか?

    ちなみにgooglechromeのインストールは、
    ec2-user:~/environment/taskleaf $ curl https://intoli.com/install-google-chrome.sh | bash
    とアプリケーションのディレクトリで行いました。
    これが問題だったということでしょうか??

    キャンセル

  • 2019/03/26 19:48

    うーん・・・問題ないように見えますね
    ちょっとわかりません。

    キャンセル

  • 2019/03/26 20:04

    そうですか...
    色々教えていただき、ありがとうございます。

    awsでの学習は一旦保留して、新しい環境でやってみます。

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 89.21%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる