selenium

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

まとめ

このエラーに遭遇して調べてみたところ、記事執筆時点では意外にも情報が少なかったため残しておきます。

SPONSORED LINK

コメントを残す

メールアドレスが公開されることはありません。