Webスクレイピングをしていて、ちょこちょこ問題になるWebドライバーの更新。定期的にWebスクレイピングをしていると、Chromeが自動更新されてWebドライバーのバージョンと不一致になり、下記のようなエラーが起こることがよくあります。
selenium.common.exceptions.SessionNotCreatedException: Message: session not created: This version of ChromeDriver only supports Chrome version 121
Current browser version is 128.0.6613.120 with binary path C:\Program Files\selenium\chromedriver-win64たまににWebスクレイピングするとしても、Webドライバーの手動更新は避けたいです。つい先日までWebドライバーの自動更新にwebdriver-managerを使っていたのですが、ジャベ雄さんの記事 にたどり着き、Selenium4.11以上を使っていればSelenium自身にChromeDriver自動更新機能が搭載されていることを知りました。
Pypiのリリース履歴によるとSelenium 4.11は2023年8月1日にリリースされていて、だいぶ前からSeleniumだけでWebドライバーの自動更新ができるようになっていたのですね…。
が、私の場合は上記だけではうまくできなかったので、私の場合の解決方法をメモしておきます。
手順①Seleniumのバージョン確認
Selenium4.11以上でしないとSeleniumだけでWebドライバーの自動更新ができないので、seleniumの現バージョンのチェックです。
>pip show selenium
Name: selenium
Version: 4.25.0
Summary: Official Python bindings for Selenium WebDriver
Home-page: https://www.selenium.dev
Author:
Author-email:
License: Apache 2.0
Location: C:\Users\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.11_qbz5n2kfra8p0\\site-packages
Requires: urllib3
Required-by:ここでバージョンが4.11未満であれば、以下の対応が必要になります。
Selenium4.11未満の場合
pip install -U selenium をコマンドへ入力してアップデートすればO.K.です。
インストールされていない場合
seleniumがインストールされていない場合、以下のコマンドを入力して、インストールしましょう。
pip install selenium
手順②コードの書き換え
webdriver-managerを使い始めたのも最近で、以下のコードを使ってました。
from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager
driver = webdriver.Chrome(ChromeDriverManager().install())これを以下のように書き換えます。
from selenium import webdriver
driver = webdriver.Chrome() これで自動更新完成!と思いきや…
これで大丈夫なはず!!…だったのですが、何度コードを実行しても「ChromeのバージョンとWebDriverのバージョンが不一致です」とエラーが返されます。
途方に暮れていて、パスを通さないといけないのか?など色々考えてましたが、ほんと単純なことで解決しました。
既存ChromeDriverの保存フォルダを変更
もともと私はChromeDriverを使っていたので既存のChromeDriverが冒頭のエラーメッセージの通り
C:\Program Files\
に保存していて、ファイルパスが
C:\Program Files\selenium\chromedriver-win64\chromedriver.exeでした。
ただ、Seleniumのchromedriverのインストール先は
C:\Users\ユーザー名\.cache\selenium\chromedriver\のようで、既存のChromeDriverをフォルダごとC:\Users\ユーザー名\.cache\selenium\chromedriver-win64\chromedriver.exe
に移動させました。これだけで
from selenium import webdriver
driver = webdriver.Chrome() を含むコードを実行すると、新しいChromeDriverがインストールされるようになり、無事SeleniumだけでChromeDriverが自動更新されるようになりました。
ただ訳あってSeleniumのバージョン更新ができない場合、webdriver-managerを使うことでChromeDriverの自動更新ができます。
注意点
Selenium4.11以上をインストールして、上記の対応をしていればDriverが自動更新…かと思いきや、まだ注意点がありました。
冒頭のPypiの履歴を確認すると、Selenium4.11がサポートしているブラウザがFirefox,Chrome,InternetExplorerで、Edgeはサポート外です。(Selenium4.11はPython3.7以上が必要です)
Selenium4.30(2025年3月22日リリース)分よりEdgeがサポート対象になっています(Selenium4.30はPython3.9以上が必要です)
参考
以下、参考にさせていただいた記事です。ありがとうございました。
・【Python】Seleniumにwebdriver_managerはもう要らない!|実務向けプログラミング

コメント