【Python/Selenium】ChromeDriverバージョンエラー対処法

- Python -
2021.01.02
Python[パイソン]

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

バージョンの数字は変わっていくので適宜読み替えてください。

前提:

本記事では、以下1, 2ステップでchromedriver-binaryライブラリを利用してChromeDriverのパスを自動で通しているものとします。

  1. pip install chromedriver-binaryでChromeDriverをインストール
  2. プログラムファイル内でimport chromedriver_binaryと記述(冒頭例の1行目)

これ以外の方法、たとえばWindowsでchromedriver.exeファイルを手動で配置して環境変数のパスに通している場合は、本記事通りに作業をしても解決しません。

これを機にchromedriver-binaryの利用をおすすめ。以下、具体的な手順です。

参考【1分】PythonのSelenium実行環境を構築する最短手順

Message: session not created: This version of ChromeDriver only supports Chrome version XX の対処法

この2つの手順で解決しました。

  1. Google Chromeのバージョン確認
  2. ChromeDriverの適切なバージョンを再インストール

1. 今使っているGoogle Chromeのバージョンを確認

以下再度同じエラーメッセージを再掲しますが、「現Google ChromeのバージョンとChromeドライバのサポートするバージョンが合っていない」という内容です。

Message: session not created: This version of ChromeDriver only supports Chrome version 80

なので、まずは愚直に現行Chromeブラウザのバージョンをチェックします。

ブラウザ右端の3点マーク > ヘルプ > Google Chromeについて

以下、Chromeブラウザのバージョンが確認できる

Chromeのバージョン

↑の例では、Google Chromeのバージョンが「79.0.3945.88」と分かりました。

  • Google Chromeバージョン:79
  • ChromeDriverが対応するChromeバージョン:80

→ Google Chromeとドライバーの対応バージョン不一致が起きている

よって対処法は以下のどちらかになりますが、

  1. Google Chromeを更新してバージョンを上げる
  2. ChromeDriverのバージョンを下げるため、インストールし直す

今回僕の例では「Chromeは最新版です」と表示されブラウザバージョンを上げる①の対処はできなかったので、Chromeに合わせて下げたバージョンのChromeDriverを再インストールをすることに。

メモ:

もしGoogle Chromeが「新しいバージョンに更新できます」になっていて、そのバージョンがChromeDriverの対応バージョンと一致するならChromeブラウザのバージョン更新をしてみてください。

以下、ChromeDriver側のバージョンをブラウザに合わせることでエラーを解消する手順です。

2. Chromeに対応するバージョンのChromeDriverを再インストール

まず以下へアクセスすると、ChromeDriverのバージョンヒストリーが見れます。

https://pypi.org/project/chromedriver-binary/#history

ChromeDriverのバージョンヒストリー

↑手順①で確認した、現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が立ち上がれば作業は完了です。

手動更新は面倒!ChromeDriverを自動更新する方法

ここまでの手順は「今後Google Chromeのバージョンが(勝手に)更新されるたびにChromeDriverも手動でpip installしなおさなければいけない」ということを意味します。

一時的に利用するプログラムならいいかもしれませんが、継続的に利用するならこの手作業更新は面倒...。

そんな時はwebdriver_managerというライブラリを使うことで、簡単に手動更新作業を永久に消し去ることができて便利です。

以下別記事で紹介しているので参考にどうぞ。

関連記事【Selenium】ChromeDriverを自動更新するPythonライブラリが便利

 

↑TOP