改めてWebDriverManagerが便利だと感じた話
WebブラウザとWebDriverのバージョンについて
こちらは、ウイングアークAgile and DevOps Stories のAdvent Calendar 2021、第5弾(12月7日)の投稿となります。
こんにちは、9月よりMotionBoardからDatalizerのQAに異動になりました、佐藤亮です。
以前、オフィスから離れた地でリモートワークをしている記事を書かせていただきましたが、現在も釧路で業務をしております。
SeleniumでWebブラウザを操作するときにそれぞれのブラウザのWebDriverを利用して自動操作を実現しています。
本日はWebDriverManagerライブラリをテーマとしてお話します。
チームが使っているSeleniumを利用したWeb操作自動化ツールの改修を行いました。
使っているメンバーから「テストを実施するときにWebDriverとブラウザのバージョンに差異があるため、テストが実施できずエラーになってしまう」問題があったためWebDriverManagerライブラリを導入しました。
今まではテストを実施するタイミングでWebDriverを配布しているサイトからドライバーをダウンロードし、テストプロジェクト内に配置をする作業が必要でした。
Jenkinsなどを利用してデイリーでテストを実施しているときも、ブラウザが自動でアップデートされてテストプロジェクトに配置しているWebDriverとバージョン差異が起きてテストがエラーになり、ドライバーを入れ替えて再度テスト実行することがあると思います。
上記のような問題を解決するのがWebDriverManagerです。
このライブラリを利用するとライブラリが最新のWebDriverを取得してくるので、Webブラウザのバージョンが更新されてもテストに失敗しないで実行できます。
導入方法は以下のようなコードです(Java×Maven)
pom.xmlに以下のコードを追加
<dependencies>
<dependency>
<groupId>io.github.bonigarcia</groupId>
<artifactId>webdrivermanager</artifactId>
<version>4.4.3</version>
</dependency>
</dependencies>
WebDriverを使うところで以下のようにコーディングすればOK
(例はChromeです)
WebDriverManager.chromedriver().setup;
ChromeDriver driver = new WebDriver();
driver.get("https://www.wingarc.com/");
WebDriverの配置場所を指定する必要がないので記載もシンプルです。
テスト環境によってはブラウザのバージョンを固定されている状態もあるかと思います。
その時は以下のようにすればバージョン指定もできます。
WebDriverManager.chromedriver("[利用するブラウザのバージョン]").setup;
以前MotionBoardのテスト自動化を行いましたが、その時は最初からWebDriverManagerを利用していたためあまりライブラリの恩恵を受けている感覚はなかったです。
今回の改修で実際に手動でドライバーを入れ替える作業が発生や、ブラウザのバージョンを確認する作業が発生していたのをこのライブラリでは無視できるため、改めてこのWebDriverManagerは素晴らしいライブラリだなと強く感じました。
SeleniumでWeb操作をするのなら必須レベルなぐらい便利だと思います。
自動テスト実施時にWebDriverの入れ替えがよく発生しているのであれば、ぜひWebDriverManagerの導入を検討してみてください。