【Python】(解決済)seleniumだけでchromedriverの自動更新ができるはずなのにできなかった話

Webスクレイピングをしていて、ちょこちょこ問題になるWebドライバーの更新。定期的にWebスクレイピングをしていると、Chromeが自動更新されてWebドライバーのバージョンと不一致になり、下記のようなエラーが起こることがよくあります。

Python
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の現バージョンのチェックです。

Python
>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を使い始めたのも最近で、以下のコードを使ってました。

Python
from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager
driver = webdriver.Chrome(ChromeDriverManager().install())

これを以下のように書き換えます。

Python
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

に移動させました。これだけで

Python
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はもう要らない!|実務向けプログラミング

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

CAPTCHA


目次