Skip to content

ChromeDriverとChromeのバージョン不一致エラーの解決法

Seleniumを使用中に発生する「selenium.common.exceptions.SessionNotCreatedException: This version of ChromeDriver only supports Chrome version 114.」エラーは、ChromeブラウザとChromeDriverのバージョンが一致しない場合に生じます。この問題の原因と効率的な解決策を解説します。

問題の原因

text
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をダウンロードします。

python
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 パッケージの利用

bash
pip install chromedriver-py
python
from selenium import webdriver
from chromedriver_py import binary_path

service = webdriver.ChromeService(executable_path=binary_path)
driver = webdriver.Chrome(service=service)

方法3: 手動で適切なDriverをダウンロード

自動管理が難しい場合、正しいバージョンを手動で取得:

  1. Chromeのバージョン確認: chrome://settings/help
  2. Chrome for Testing から対応バージョンをDL
  3. パスを指定して使用
python
service = Service("path/to/downloaded/chromedriver")
driver = webdriver.Chrome(service=service)

代替解決策 (特殊ケース向け)

undetected-chromedriver 使用時

python
# ライブラリを最新化
pip install --upgrade undetected-chromedriver
python
import undetected_chromedriver as uc

options = uc.ChromeOptions()
driver = uc.Chrome(
    driver_executable_path="path/chromedriver.exe", 
    options=options
)

ブラウザのバージョンダウングレード (非推奨)

注意

セキュリティリスクがあるため一時的対策に限定

bash
# 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

予防策とベストプラクティス

  1. Seleniumの定期更新

    bash
    pip install --upgrade selenium
  2. 依存関係の明示的指定

    bash
    # requirements.txt例
    selenium>=4.11.2
    chromedriver-py # オプション
  3. CI/CD環境ではテスト用Chromeを利用:

    yaml
    # GitHub Actions例
    - name: Set up Chrome for Testing
      uses: browser-actions/setup-chrome@v1
  4. Driverパス指定時の注意点

    python
    # 正しい指定 (ファイルパスまで含める)
    Service("C:/path/chromedriver.exe")
    
    # 誤った指定 (ディレクトリのみ)
    Service("C:/path/") # エラー発生

プロジェクト内での管理

Driverをプロジェクト内に含める場合:

project/
├── drivers/
│   └── chromedriver.exe
├── main.py
└── requirements.txt

パス指定例:

python
from pathlib import Path
service = Service(Path.cwd() / 'drivers' / 'chromedriver.exe')

根本原因と仕組み

ChromeDriverは特定のメジャーバージョンのChromeとしか互換性がありません。Googleが提供するChrome for Testingは、自動テスト環境用に安定版ブラウザを提供する公式プロジェクトです。Selenium 4.11.2以降はこのシステムと連携し、バージョン不一致問題を自動解決します。


トラブルシューティング

  1. Selenium更新後もエラーが発生

    • キャッシュ削除: pip cache purge
    • 仮想環境再作成
  2. 企業ポリシーで自動更新不可

    python
    # 更新無効化オプション
    options.add_argument("--disable-auto-update")
  3. 特定バージョン指定が必要な場合

    python
    # undetected-chromedriverの場合
    driver = uc.Chrome(version_main=115)

これらの手法を適用することで、ChromeとChromeDriverのバージョン不一致エラーを効果的に解決し、安定した自動テスト環境を維持できます。