SeleniumでChrome version must be betweenエラーが出た時の対処方法
はじめに
Seleniumを使って自動化している業務があり、いつものようにスクリプトを実行したところChrome version must be between 70 and 73
というようなエラーがでてしまいました。この記事では、このエラーの原因と解決方法についてまとめます。
エラーの内容
出てきたエラーは以下です。使用している言語はRubyです。selenium-script.rb
というのは私が使用しているスクリプトファイルの名前です。
$ ruby selenium-script.rb
Traceback (most recent call last):
13: from selenium-script.rb:9:in `<main>'
12: from /home/username/.rbenv/versions/2.6.2/lib/ruby/gems/2.6.0/gems/selenium-webdriver-3.141.0/lib/selenium/webdriver.rb:86:in `for'
11: from /home/username/.rbenv/versions/2.6.2/lib/ruby/gems/2.6.0/gems/selenium-webdriver-3.141.0/lib/selenium/webdriver/common/driver.rb:44:in `for'
10: from /home/username/.rbenv/versions/2.6.2/lib/ruby/gems/2.6.0/gems/selenium-webdriver-3.141.0/lib/selenium/webdriver/common/driver.rb:44:in `new'
9: from /home/username/.rbenv/versions/2.6.2/lib/ruby/gems/2.6.0/gems/selenium-webdriver-3.141.0/lib/selenium/webdriver/chrome/driver.rb:49:in `initialize'
8: from /home/username/.rbenv/versions/2.6.2/lib/ruby/gems/2.6.0/gems/selenium-webdriver-3.141.0/lib/selenium/webdriver/remote/bridge.rb:53:in `handshake'
7: from /home/username/.rbenv/versions/2.6.2/lib/ruby/gems/2.6.0/gems/selenium-webdriver-3.141.0/lib/selenium/webdriver/remote/bridge.rb:99:in `create_session'
6: from /home/username/.rbenv/versions/2.6.2/lib/ruby/gems/2.6.0/gems/selenium-webdriver-3.141.0/lib/selenium/webdriver/remote/bridge.rb:166:in `execute'
5: from /home/username/.rbenv/versions/2.6.2/lib/ruby/gems/2.6.0/gems/selenium-webdriver-3.141.0/lib/selenium/webdriver/remote/http/common.rb:62:in `call'
4: from /home/username/.rbenv/versions/2.6.2/lib/ruby/gems/2.6.0/gems/selenium-webdriver-3.141.0/lib/selenium/webdriver/remote/http/default.rb:104:in `request'
3: from /home/username/.rbenv/versions/2.6.2/lib/ruby/gems/2.6.0/gems/selenium-webdriver-3.141.0/lib/selenium/webdriver/remote/http/common.rb:84:in `create_response'
2: from /home/username/.rbenv/versions/2.6.2/lib/ruby/gems/2.6.0/gems/selenium-webdriver-3.141.0/lib/selenium/webdriver/remote/http/common.rb:84:in `new'
1: from /home/username/.rbenv/versions/2.6.2/lib/ruby/gems/2.6.0/gems/selenium-webdriver-3.141.0/lib/selenium/webdriver/remote/response.rb:32:in `initialize'
/home/username/.rbenv/versions/2.6.2/lib/ruby/gems/2.6.0/gems/selenium-webdriver-3.141.0/lib/selenium/webdriver/remote/response.rb:69:in `assert_ok': session not created: Chrome version must be between 70 and 73 (Selenium::WebDriver::Error::SessionNotCreatedError)
(Driver info: chromedriver=73.0.3683.68 (47787ec04bjraowhte;awiejt'p';e72),platform=Linux 4.15.0-48-generic x86_64)
この原因と解決策についてまとめます。
前提と環境
私の環境は以下の通りです。ここではOSがUbuntu18.04ですが、Windows、Mac OSでも基本的に作業は同じなると思います。
- OS : Ubuntu18.04
- Google Chrome : ver74
Chrome version must be between エラーの原因
このエラーの原因は、SeleniumのWebdriver(ここではChromedriver)が対応しているブラウザのバージョンと、操作しようとしているブラウザ(ここではGoogle Chrome)のバージョンが異なっていることが原因です。元々動作していても、ブラウザのバージョンが上がることでバージョンに差異が出てしまいエラーが出てしまいました。 したがって、解決策はWebdriverが対応しているブラウザのバージョンとブラウザのバージョンを合わせることになります。 この記事では、WebdriverはChromedriver、ブラウザはGoogle Chromeとして解決策を載せますが、Firefoxの場合でも必要な操作は同様です。
Chrome version must be between エラーの解決策
まずGoogle Chromeを起動し、以下のように「︙」のメニューから「ヘルプ」→「Google Chromeについて」をクリックします。
以下のようにGoogle Chromeのバージョンが表示されますのでメモしておきます。以下の画像ではバージョンが74になります。
なお、冒頭に記載したエラーの最後に、Driver info: chromedriver=73.0.3683.68
という部分があり、ChromeDriverのバージョンが73であることが分かります。そしてこれがGoogle Chromeのバージョン74と違うことが原因でした。
続いてChromeDriverの公式ページにアクセスします。以下のようにGoogle Chromeの3つのバージョンに対応したChromeDriverが用意されているので、各自のGoogle Chromeに対応したバージョンのリンクをクリックします。
以下のように各OS用のzipファイルリンクが表示されるので、各自のOSに合わせたzipファイルをダウンロードします。
あとはダウンロードしたzipファイルをお好きな方法で展開し、いつも使用しているディレクトリにchromedriver
を設置すれば対応は完了です。
$ unzip chromedriver_linux64.zip
まとめ
このエラーに遭遇して調べてみたところ、記事執筆時点では意外にも情報が少なかったため残しておきます。