※この記事は、個人技術ブログ CodeArchPedia.com の技術メモ(要約)です。
ウェブ自動テストを書いていて、ある日突然、セッションが作成されずにテストが落ちる現象に遭遇した。メッセージには「このバージョンのChromeDriverはChromeバージョンXのみをサポートしています」とあり、どうやらバージョン不一致が原因らしい。手動でドライバを更新する作業を続けるのはバカバカしいので、恒久的な対策を講じた話。
何が起きたか(課題)
このバージョン不一致エラーは、Google Chromeが勝手にアップデートされるたびに発生する。現場でこれが起きると、以下のようなリスクが生じる。
- テストの実行がその都度ブロックされ、デプロイパイプラインが停止する。
- 古いドライバを使い続けるとセキュリティリスクが高まる。
- 手動でパスを管理するのは手間がかかり、CI/CD環境での差分管理が複雑になる。
どう解決したか(概要)
この問題を解決する現代的なアプローチは、ドライバのバージョン管理を完全にツールに任せることだ。手動でLBYL(Look Before You Leap)的に確認するのではなく、実行時に自動で適切なバージョンを探させる。
Java/Maven環境の場合は、WebDriverManager (Bonigarcia) を導入する。導入手順は、まず依存関係を追加し、テストコード側でドライバのパス設定を不要にするだけだ。
import io.github.bonigarcia.wdm.WebDriverManager;
// ドライバの自動セットアップ
WebDriverManager.chromedriver().setup();
Python環境でSelenium 4.6以降を使用しているなら、Selenium Manager が組み込まれているため、通常は特別な設定は不要になる。Chromeのバージョンが変わっても、ツール側が自動で互換性のあるドライバをダウンロードし、パス設定まで完了させてくれる。
手動で合わせる方法として、まず chrome://settings/help でChromeのメジャーバージョンを確認し、次に Chrome for Testing のダッシュボード から該当バージョンのChromeDriverをダウンロードし、System.setProperty でパスを指定する手順も確認したが、これはあくまで最終手段であり、極めて非推奨だ。
効果(Before/After)
自動管理を導入した結果、エンジニアはドライバのバージョンアップに一切関与する必要がなくなった。これにより、テストロジックの改善という本質的なタスクに集中できるようになった。手動更新に伴うメンテナンスコストがゼロになり、CI/CD環境での予期せぬバージョン差分によるテスト失敗が劇的に減少した。
🚀 詳細な設定とコードはこちら
具体的なWAFのルール設定や、より詳細なログ解析データは元のブログで公開しています。