【この記事を読むのに必要な時間は約 5 分です】
Python+Seleniumの環境を整える上で、必要となるのが ChromeDriver です。今回、webdriver.Chrome() の実行時に原因不明のエラーが発生したのでその対処方法を記録しておきます。
webdriver.Chrome() 実行時にエラーが発生する
今回発生したエラーは以下の通りで、webdriver.Chrome() の実行時に不明なエラーが発生した、とあります。
selenium.common.exceptions.SessionNotCreatedException: Message: session not created exception from unknown error: Runtime.evaluate missing 'wasThrown' (Session info: chrome=81.0.4044.129) (Driver info: chromedriver=2.23.409710 (0c4084804897ac45b5ff65a690ec6583b97225c0),platform=Mac OS X 10.14.4 x86_64)
これだけでは意味のないメッセージなのですが、わざわざ利用している Chromeと ChromeDriver のバージョンを記載してくれたので、バージョンの差異によるものだろうと推測できました。
ChromeDriver の差し替えはいくつか方法があるのですが、一番かんたんな方法は以下のコマンドからインストールすることです。
#pip install chromedriver-binary
ただし、この方法だと Python 実行時にしか利用できないことに注意してください。Python 実行環境以外でも利用するのであればファイルをダウンロードしてきてパスを通す必要があります。
上記を実行すると、以下のように最新版のドライバーがインストールされます。
Collecting chromedriver-binary Downloading chromedriver-binary-83.0.4103.14.0.tar.gz (3.4 kB) Installing collected packages: chromedriver-binary Running setup.py install for chromedriver-binary ... done Successfully installed chromedriver-binary-83.0.4103.14.0
これだけでは、インストールしたドライバーを利用してくれないので以下をコード内に追記します。
import chromedriver_binary
実行し直すと、またエラーになりましたが今回は ChromeDriver がサポートするバージョンは 83 のみだと、はっきりとエラーの原因を出力してくれるようになりました。
selenium.common.exceptions.SessionNotCreatedException: Message: session not created: This version of ChromeDriver only supports Chrome version 83
バージョンを指定して ChromeDriver インストールのやり直し
Chrome 81 に対応している ChromeDriver が必要なことが分かったので、以下からリリース済みのバージョンを確認します。
http://chromedriver.chromium.org/downloads
If you are using Chrome version 81, please download ChromeDriver 81.0.4044.69
バージョンを指定してインストールします。
pip install chromedriver-binary==81.0.4044.69
Installing collected packages: chromedriver-binary Attempting uninstall: chromedriver-binary Found existing installation: chromedriver-binary 83.0.4103.14.0 ninstalling chromedriver-binary-83.0.4103.14.0: Successfully uninstalled chromedriver-binary-83.0.4103.14.0 Running setup.py install for chromedriver-binary ... done Successfully installed chromedriver-binary-81.0.4044.69.0
これで実行時にエラーは起きなくなりました。Chrome のバージョンが代わる都度、インストールを行う必要があるのでその対応はまた考えたいと思います。