はじめに (対象読者・この記事でわかること)
この記事は、JavaでWebアプリケーションのE2E自動テストを書いているが「EdgeのWebDriverバージョンが合わずに起動失敗」に悩んでいる開発者向けです。
Selenium 4.11から追加された「Selenium Manager」機能を使うと、pom.xmlに1行追加するだけでEdgeのWebDriverを自動ダウンロード&キャッシュしてくれるようになりました。
記事を読み終えると、手動でmsedgedriver.exeをダウンロードしたりPATHを通したりする作業が一切不要になり、CI/CDパイプライン上でも「常に最新Edge」でのテストが安定して回せるようになります。
前提知識
この記事を読み進める上で、以下の知識があるとスムーズです。 - Java 11以降の基本的な文法とMaven(またはGradle)プロジェクトの作成方法 - Selenium WebDriverの基礎(WebDriverインタフェース、WebElementの操作) - JUnit 5で@Testアノテーションを使ったテストクラスの書き方
Selenium 4.11でWebDriver管理が楽になった理由
従来は、Edgeのメジャーバージョンが上がるたびに「Edgeのバージョン確認→対応するWebDriverダウンロード→PATHを通す」を手動で繰り返していました。
Selenium 4.11以降、公式に「Selenium Manager」というバイナリが組み込まれ、Javaバインディングから自動で「必要なバージョンのWebDriverを~/.cache/seleniumにキャッシュ&参照」してくれるようになりました。
つまり、ローカルでもCI上でも「Edgeのバージョンを意識せず」テストコードが走るようになったのです。
JavaプロジェクトでEdgeを自動起動するまでの実装手順
Java + Mavenプロジェクトを例に、EdgeのWebDriverを「手動ダウンロードなし」で起動する手順を解説します。
ステップ1:依存関係にSelenium 4.11以降を指定
pom.xmlに以下1行を追加するだけでOKです(2025年6月時点の最新は4.22.0)。
Xml<dependency> <groupId>org.seleniumhq.selenium</groupId> <artifactId>selenium-java</artifactId> <version>4.22.0</version> <scope>test</scope> </dependency>
これだけでselenium-managerバイナリがtransitive依存として解決されます。
Gradleを使っている場合はimplementation 'org.seleniumhq.selenium:selenium-java:4.22.0'と同じです。
ステップ2:EdgeOptionsを使ってブラウザを起動
従来通りEdgeOptionsで起動するだけで、Selenium Managerが裏でmsedgedriverをキャッシュして実行してくれます。
Java@Test void edgeCanLaunchWithoutManualDriver() { EdgeOptions options = new EdgeOptions(); options.addArguments("--headless=new"); // CI上では必須 WebDriver driver = new EdgeDriver(options); // ここで自動ダウンロードが走る driver.get("https://example.com"); assertThat(driver.getTitle()).contains("Example"); driver.quit(); }
初回実行時は~/.cache/seleniumにmsedgedriverがダウンロードされ、2回目以降はキャッシュが使われます。
Windows/Mac/Linuxすべてで同一のコードで動作します。
ハマった点:プロキシ環境だとSelenium Managerが失敗する
社内NWなどプロキシ環境でCIを回すと、selenium-managerがHTTPSアクセスできず「driver unavailable」で失敗することがあります。
解決策:プロキシ設定をJVM引数に渡す
Mavenのmaven-failsafe-plugin(またはsurefire-plugin)でプロキシを指定します。
Xml<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-failsafe-plugin</artifactId> <configuration> <systemPropertyVariables> <https.proxyHost>proxy.example.com</https.proxyHost> <https.proxyPort>8080</https.proxyPort> <https.nonProxyHosts>localhost|127.0.0.1</https.nonProxyHosts> </systemPropertyVariables> </configuration> </plugin>
これでSelenium Managerもプロキシを通ってEdgeのWebDriverをダウンロードできるため、CI上でもエラーが解消します。
まとめ
本記事では、Selenium 4.11以降のSelenium Manager機能を使い「JavaからEdgeのWebDriverを自動ダウンロード」する方法を解説しました。
- pom.xmlに
selenium-java:4.22.0を1行追加するだけで準備完了 EdgeDriverインスタンス生成時に裏でmsedgedriverが自動キャッシュ- プロキシ環境ではJVM引数で
https.proxyHost/Portを指定
この記事を通して、Edgeのバージョンアップ毎のWebDriver手動管理が不要になり、ローカルでもGitHub ActionsなどCI上でも「常に最新Edge」で安定したE2Eテストが回せるようになります。
次回は「GitHub Actions + Selenium Manager + Testcontainers」でマトリクステストを回す方法を紹介予定です。
参考資料
- Selenium 4.11 Release Note – Selenium Manager
- Microsoft Edge Driver ダウンロードページ(手動ダウンロード不要になった理由)
- Selenium Manager ソースコード(GitHub)
