しかし、バージョン差異によるエラーが発生するたびに毎回ChromeDriverのアップデート作業が発生するのは面倒です。
そこで、自動的にChromeDriverのバージョンをブラウザのバージョンと一致させる webdriver_manager ライブラリを利用して、Pythonファイルが実行されるたびにバージョン差異をチェック、バージョンが異なる場合には自動的にバージョンが合う形でインストールされるようにしました。
以下、webdriver_managerのインストールおよび実行時に発生したエラーの解消方法とあわせてご紹介していきます。
目次:

webdriver_managerライブラリで実行時にChromeバージョン一致
webdriver_managerの動きとしては、プログラム実行時に現在のGoogle Chromeのバージョンを確認し、自動で適切なChrome Driverを当てたうえで実行するようになるようです。
他にもwebdrivermanagerやwebdriver-managerなど類似のライブラリがあるようなのですが、webdriver_managerがライブラリの充実さからよく使われていそう。
以下、インストールおよび実行時に発生したエラーと解消方法についてご紹介。
実行環境における権限エラー: pip install —user
venvによる仮想環境で $ pip install webdriver-manager を実行しようとしたところ、下記権限エラーが発生。
ERROR: Could not install packages due to an EnvironmentError: [Errno 13] Permission denied: '/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/idna-3.3.dist-info'
Consider using the --user
option or check the permissions.
指示されたとおり、下記のように—user オプションをつけて実行すると無事にインストールできましたが、後にエラーが発生。
$ pip install web-driver --user
そこで、pip3で別パッケージとしてインストールしなおします。
$ pip3 install webdriver_manager
インストールされているSeleniumのバージョンをコマンドラインで調べる方法
GitHub上のRead.meには、Selenium 3 と Selenium 4のバージョンによって異なる方法が示されています。
インストールされているSeleniumのバージョンを調べるには、たとえばPython対話シェルで下記のように実行します。
$ python
>>> import selenium
>>> help (selenium)
...
VERSION
4.1.3
...
Selenium 4向けのコードを追加
公式を参考に、下記コードを追加します。
# selenium 4
from selenium import webdriver
from selenium.webdriver.chrome.service import Service as ChromeService
from webdriver_manager.chrome import ChromeDriverManager
driver = webdriver.Chrome(service=ChromeService(ChromeDriverManager().install()))
ModuleNotFoundError: No module named 'webdriver_manager’ のエラーが発生
上記のコードを追記して実行したところ、“webdriver_managerのモジュールが見つかりません”というエラーが発生。
このときはpipでweb-driverをインストールしていたので、pip3で下記のようにwebdriver_managerをインストールしなおします。
$ pip3 install webdriver_manager
これで無事に実行時にChromeDriverのバージョンをチェックし、バージョンに差異がある場合には自動て最新版をインストールしてくれるようになりました!
手動でChromeDriverをアップデートする方法は
この記事の気になった箇所を読み返す:
category: