ChromeDriverとChromeのバージョン不一致エラーの解決法
Seleniumを使用中に発生する「selenium.common.exceptions.SessionNotCreatedException: This version of ChromeDriver only supports Chrome version 114.」エラーは、ChromeブラウザとChromeDriverのバージョンが一致しない場合に生じます。この問題の原因と効率的な解決策を解説します。
問題の原因
selenium.common.exceptions.SessionNotCreatedException:
This version of ChromeDriver only supports Chrome version 114.
Current browser version is 123.0.6312.122
このエラーが発生する主な理由:
- Chromeブラウザが自動更新されたが、ChromeDriverが古いまま
- ChromeDriverのバージョンがブラウザより大幅に低い
- Seleniumが適切なChromeDriverを自動取得できない状態
ChromeDriverManager
が最新バージョンを正しく認識できない
推奨解決策: Seleniumを最新化し自動管理を利用
方法1: Selenium 4.11.2+ で自動解決 (最適解)
Chrome 115以降では、Selenium 4.11.2以上が必須です。Serviceクラスが自動的に適切なChromeDriverをダウンロードします。
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.chrome.options import Options
service = Service()
options = Options()
driver = webdriver.Chrome(service=service, options=options)
driver.get("https://example.com")
driver.quit()
メリット
- 手動ダウンロード不要
- 常にブラウザと互換性のあるDriverを使用
- コードのメンテナンスが大幅に簡略化
方法2: chromedriver-py パッケージの利用
pip install chromedriver-py
from selenium import webdriver
from chromedriver_py import binary_path
service = webdriver.ChromeService(executable_path=binary_path)
driver = webdriver.Chrome(service=service)
方法3: 手動で適切なDriverをダウンロード
自動管理が難しい場合、正しいバージョンを手動で取得:
- Chromeのバージョン確認:
chrome://settings/help
- Chrome for Testing から対応バージョンをDL
- パスを指定して使用
service = Service("path/to/downloaded/chromedriver")
driver = webdriver.Chrome(service=service)
代替解決策 (特殊ケース向け)
undetected-chromedriver 使用時
# ライブラリを最新化
pip install --upgrade undetected-chromedriver
import undetected_chromedriver as uc
options = uc.ChromeOptions()
driver = uc.Chrome(
driver_executable_path="path/chromedriver.exe",
options=options
)
ブラウザのバージョンダウングレード (非推奨)
注意
セキュリティリスクがあるため一時的対策に限定
# Ubuntu例 (Chrome 114をインストール)
wget http://dl.google.com/linux/deb/pool/main/g/google-chrome-unstable/google-chrome-unstable_114.0.5735.6-1_amd64.deb
sudo apt install ./google-chrome-unstable_114.0.5735.6-1_amd64.deb
予防策とベストプラクティス
Seleniumの定期更新
bashpip install --upgrade selenium
依存関係の明示的指定
bash# requirements.txt例 selenium>=4.11.2 chromedriver-py # オプション
CI/CD環境ではテスト用Chromeを利用:
yaml# GitHub Actions例 - name: Set up Chrome for Testing uses: browser-actions/setup-chrome@v1
Driverパス指定時の注意点
python# 正しい指定 (ファイルパスまで含める) Service("C:/path/chromedriver.exe") # 誤った指定 (ディレクトリのみ) Service("C:/path/") # エラー発生
プロジェクト内での管理
Driverをプロジェクト内に含める場合:
project/
├── drivers/
│ └── chromedriver.exe
├── main.py
└── requirements.txt
パス指定例:
from pathlib import Path
service = Service(Path.cwd() / 'drivers' / 'chromedriver.exe')
根本原因と仕組み
ChromeDriverは特定のメジャーバージョンのChromeとしか互換性がありません。Googleが提供するChrome for Testingは、自動テスト環境用に安定版ブラウザを提供する公式プロジェクトです。Selenium 4.11.2以降はこのシステムと連携し、バージョン不一致問題を自動解決します。
トラブルシューティング
Selenium更新後もエラーが発生
- キャッシュ削除:
pip cache purge
- 仮想環境再作成
- キャッシュ削除:
企業ポリシーで自動更新不可
python# 更新無効化オプション options.add_argument("--disable-auto-update")
特定バージョン指定が必要な場合
python# undetected-chromedriverの場合 driver = uc.Chrome(version_main=115)
これらの手法を適用することで、ChromeとChromeDriverのバージョン不一致エラーを効果的に解決し、安定した自動テスト環境を維持できます。