【Python/Selenium】ChromeDriverバージョンエラー対処法
Python/SeleniumでGoogle Chromeブラウザを自動操作したくてこんなふうにコードをかいて、
Pythonimport chromedriver_binary
from selenium import webdriver
driver = webdriver.Chrome()
driver.get('https://google.com')
動かしてみたら、4行目のwebdriver.Chrome()でこんな↓エラーが出た時の対処方です。
selenium.common.exceptions.SessionNotCreatedException: Message: session not created: This version of ChromeDriver only supports Chrome version 80
Current browser version is 79.0.3945.88 with binary path /Applications/Google Chrome.app/Contents/MacOS/Google Chrome
バージョンの数字は変わっていくので適宜読み替えてください。
ー もくじ ー
Message: session not created: This version of ChromeDriver only supports Chrome version XX の対処法
以下、2つの方法があります。
- 今後永遠にバージョンエラーを発生させない対処法
- 手動でChromeDriverを再インストールする方法
もちろん①が圧倒的にラクなのでおすすめ。
1. ChromeDriverバージョンエラーを2度と発生させない対処法
今後Google Chromeのバージョンが(勝手に)更新されるたびにChromeDriverも手動で更新するなんて面倒くさすぎますよね。
以下どちらかの方法でChromeDriverが自動更新されるようになり、手動更新作業を永久に消し去ることができて便利です。
- Seleniumバージョン4.6から搭載された「Selenium Manager」機能に頼る
- webdriver-managerというライブラリを使う
以下の別記事で方法を書いているので、試してみてください。
関連記事【Selenium】ChromeDriver自動更新で楽する方法【Python】
自動更新にすれば、以下で書く手動作業は2度とやりたくなくなるはずです(^^;
2. 手動でChromeDriverを再インストールする方法
本手順は、2020年1月時点で確認した手順のため、2023年時点で本手順でエラーが解決するかどうか未確認です。
「ChromeDriverは手動で更新しなければいけない」という理由がなければ、自動更新する方法を実行することをおすすめします。
エラーが発生するたびにChromeDriverを手動で更新する方法も書いておきます。
以下2ステップ。
- 現在のGoogle Chromeのバージョン確認
- ChromeDriverの適切なバージョンを再インストール
前提:
本記事では、以下1, 2ステップでchromedriver-binaryライブラリを利用してChromeDriverのパスを「自動で」通しているものとします。
- pip install chromedriver-binaryでChromeDriverをインストール
- 以下のようにimport chromedriver_binaryと記述
Pythonfrom selenium import webdriver
import chromedriver_binary
driver = webdriver.Chrome()
これ以外の方法、たとえばWindowsでchromedriver.exeファイルを手動で配置して環境変数のパスに通している場合は、以降書く通りに作業をしても解決しません。
1. 現Google Chromeのバージョンを確認
以下再度同じエラーメッセージを再掲しますが、「現Google ChromeのバージョンとChromeドライバのサポートするバージョンが合っていない」という内容です。
Message: session not created: This version of ChromeDriver only supports Chrome version 80
なので、まずは愚直に現行Chromeブラウザのバージョンをチェックします。
ブラウザ右端の3点マーク > ヘルプ > Google Chromeについて
以下、Chromeブラウザのバージョンが確認できる
↑の例では、Google Chromeのバージョンが「79.0.3945.88」と分かりました。
- Google Chromeバージョン:79
- ChromeDriverが対応するChromeバージョン:80
→ Google Chromeとドライバーの対応バージョン不一致が起きている
よって対処法は以下のどちらかになりますが、
- Google Chromeを更新してバージョンを上げる
- ChromeDriverのバージョンを下げる
ぼくが対応時は「Chromeは最新版です」と表示されブラウザバージョンを上げる①の対処はできませんでした。
なので、Chromeに合わせて下げたバージョンのChromeDriverを再インストールをすることに。
メモ:
もしGoogle Chromeが「新しいバージョンに更新できます」になっていて、そのバージョンがChromeDriverの対応バージョンと一致するならChromeブラウザのバージョン更新をしてみてください。
以下、ChromeDriver側のバージョンをブラウザに合わせることでエラーを解消する手順です。
2. Chromeに対応するバージョンのChromeDriverを再インストール
まず以下へアクセスすると、ChromeDriverのバージョンヒストリーが見れます。
https://pypi.org/project/chromedriver-binary/#history
↑手順①で確認した、現Google Chromeのバージョンに合ったものをクリックします。
メモ:
今回の例だとChromeブラウザバージョンが"79.0.3945.88"だったので、上記"79.0.3945.36.0"と正確に合いませんでしたがこれで解消しました。メジャーリリース番号(今回だと79)を合わせた最新のほうを試してみてください。
↓すると、以下のようにインストールコマンドがコピーできるようになるので、これをコピーします。
ターミナルにペーストして、実行します。
[me@Mac ~]$ pip install chromedriver-binary==79.0.3945.36.0
Collecting chromedriver-binary==79.0.3945.36.0
Downloading https://files.pythonhosted.org/packages/be/04/19a0439ad7ba95d745518997a0de0ac7166835893748af75a3bfed64b13b/chromedriver-binary-79.0.3945.36.0.tar.gz
Building wheels for collected packages: chromedriver-binary
Running setup.py bdist_wheel for chromedriver-binary ... done
Stored in directory: /Users/me/Library/Caches/pip/wheels/6e/2b/80/a62b450dd2af3cacefb71b80d44d30ed609a4349b44ba18532
Successfully built chromedriver-binary
Installing collected packages: chromedriver-binary
Found existing installation: chromedriver-binary 80.0.3987.16.0
Uninstalling chromedriver-binary-80.0.3987.16.0:
Successfully uninstalled chromedriver-binary-80.0.3987.16.0
Successfully installed chromedriver-binary-79.0.3945.36.0
[me@Mac ~]$
赤下線のように、先にインストールしたバージョンのドライバは自動的にアンインストールしてくれているのが分かります。
"Successfully installed..."と表示されたら成功です。
これでdriver = webdriver.Chrome()を再度実行してみて、エラーが出ずにChromeが立ち上がれば作業は完了です。
まとめ:webdriver_managerを使うのが楽
Chromeが更新されるたびに定期実行中のSeleniumプログラムが知らぬ間に止まるのはストレスです...。
自動更新をおすすめします。