忘れた頃にPythonのコードを久しぶりに動くか見てみようとすると毎回はまる。
今回は以下のエラーと戦いました。
selenium.common.exceptions.SessionNotCreatedException: Message: session not created: This version of ChromeDriver only supports Chrome version 79
Chromeのドライバーはversion 79しかサポートしていないよという内容です。
動作環境
ざっくりMacです。
バージョンを確認する
バージョンを確認していきます。最悪ブラウザのバージョンだけわかればなんとかなります。
ブラウザ
ブラウザ(chrome)のバージョンを確認する。URLに以下を打ち込む。
chrome://settings/help
もしくは「メニュー」→「Chrome」→「Chromeについて」でバージョンを確認できます。
バージョンは83でした。細かい値忘れた。
ChromeDriver
ターミナルで以下を実行。
which chromedriver
パスが表示されるのでそのフォルダのChromeDriverを起動するとバージョンがわかります。
開発者不明で開けないのようなメッセージが出た場合は以下を参考にしてみてください。
またプログラム上に直接ChromeDriverのパスが記述されている場合はそちらのChromeDriverのバージョンを確認してください。(書いてあることをすっかり忘れていて時間がかかってしまった。)
バージョンは「79.0.3945.36」でした。壊れていて開かないと言われることもあります。その場合はあまり気にせずに次章で説明しますがダウンロードしてしまいましょう。
chromedriver-binary
バイナリーも使用しているので確認。
pip show chromedriver-binary
Version: 79.0.3945.36.0 となっていました。
考察
ブラウザがどこかのタイミングでバージョンアップしたのか、バージョンが不一致でバージョンを揃えなさいというエラーが出ていた模様。原因がわかったのでバージョンを揃えたいと思います。
ChromeDriverを使うため3つのバージョンを揃える!
ブラウザに合わせてバージョンを揃えて行くことにします。バージョンが揃っているか否かはなかなかシビアなのですべてのバージョンが一致することが望ましいです。(まれにChromeのブラウザで安定版がでるまではブラウザより1つ下げたバージョンを使用して回避することもあるようです)
ちなみにChrome(ブラウザ)がバージョンアップがあるとのことだったのでバージョンをあげ以下で揃えることにしました。
バージョン: 86.0.4240.111(Official Build) (x86_64)
ChromeDriver
ChromeDriverのバージョンは以下のサイトからダウンロードすることができます。
リンク:https://chromedriver.chromium.org/downloads
バージョンを選んだら、OSに合わせたzipをダウンロードします。
私はMacなのでchromedriver_mac64.zipをダウンロード。
ブラウザと一番近いChromeDriver 86.0.4240.22をダウンロードしました。
ダウンロードしたらzipを解凍し、古いバージョンと置き換えます。
chromedriver-binary
chromedriver-binaryはターミナルで以下のコマンドを実行します。xxxxにはバージョンを記入しますが、バージョンがわからない場合はxxxxで実行してみてください。(xxxxは適当なのでなんでもいいです。)
pip install chromedriver-binary==xxxx
エラーとなりダウンロードできるバージョンの一覧が表示されます。
ERROR: Could not find a version that satisfies the requirement chromedriver-binary==xxxxxx (from versions: 2.29.1, 2.31.1, 2.33.1, 2.34.0…….長いので以下省略
その中からブラウザに近いバージョンを探します。先にダウンロードしたChromeDriverのバージョンと同じバージョンがあったのでそちらを実行しました。
pip install chromedriver-binary==86.0.4240.22.0
念のためバージョンのわかるサイト貼り付けておきます。(Release historyから一覧がみれます。)
バージョンを選ぶとコードが上の方に出ているのでコピーして使えて便利です。
サイト:https://pypi.org/project/chromedriver-binary/
再度pythonデータを実行(解決)
3つ(ブラウザ・ChromeDriver・chromedriver-binary)のバージョンを揃えたのでPythonのデータを実行しました。無事にエラーはなくなりました。
ブラウザのバージョンが変わったからなのか、少し挙動が前と変わってしまったという点を除いて無事解決しました。
おわり
バージョン3つ揃えなければならないとは知らず、かなりはまってしまいました。パス間違えてたりもありますがバージョンは3つ揃えるということが理解できてこれからこのエラーに悩まされずに済みそうです。
何度でも言いますがバージョンは3つとも揃えましょう。