Webアプリケーションの自動テストツールSeleniumを試すシリーズ。
今回はFirefoxを立ち上げてからのテスト起動までを行ってみたいと思います。
OS/ブラウザのバージョン
検証に使用したのは、FireFox 62.0.2, Windows 10 Home 64 bit です。
まずはWeb Driverのダウンロード。https://www.seleniumhq.org/download/から最新のjavaのWebDriverをダウンロードし、解凍します。
ここではSelenium 3.14.0を使っていますが、このバージョンはFirefox 62より下のバージョンだと動作しない可能性があるので要注意。
次にEclipseでJavaプロジェクトを作り、プロジェクトを右クリックか、メニューバーの「プロジェクト」でプロパティを開きます。
「Javaのビルド・パス」を選択し、「ライブラリ」タブから先ほどダウンロード・解凍したjarファイルを、「外部JARの追加」ボタンで選択し設定します。
終わったら「適用して閉じる」ボタンをクリック。
実行コード
mainメソッドを書きます。使用するURLは、日本Seleniumユーザコミュニティが提供しているサンプルWebページ。
8行目で FirefoxDriver をインスタンス化し、ブラウザとして Firefox を起動させています。
import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.firefox.FirefoxDriver; public class Sample { public static void main (String[] args) { WebDriver driver = new FirefoxDriver(); driver.get("http://example.selenium.jp/reserveApp"); driver.findElement(By.id("goto_next")).click(); driver.quit(); } }
エラーの発生と解決方法
Eclipseから実行すると、次のエラーが発生。
Exception in thread “main” java.lang.IllegalStateException: The path to the driver executable must be set by the webdriver.gecko.driver system property; for more information, see https://github.com/mozilla/geckodriver. The latest version can be downloaded from https://github.com/mozilla/geckodriver/releases
どうやら「https://github.com/mozilla/geckodriverからgeckodriverを取得し、system propertyでセットせよ」と言われている様子。
メッセージに従い、https://github.com/mozilla/geckodriver/releases から、geckodriver-v0.22.0-win64.zipをダウンロードし解凍します。
chromedriver_win32.zipをダウンロードし解凍します。(使用しているOSは64bitなんですが、動作に問題はない様子)
先ほど記述したコードに、以下の一行を加えます。
System.setProperty("webdriver.gecko.driver", "C:\\geckodriver-v0.22.0-win64\\geckodriver.exe");
コードの修正と再実行
コードの全体像は以下となります。
import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.firefox.FirefoxDriver; public class Sample { public static void main (String[] args) { System.setProperty("webdriver.gecko.driver", "C:\\geckodriver-v0.22.0-win64\\geckodriver.exe"); WebDriver driver = new FirefoxDriver(); driver.get("http://example.selenium.jp/reserveApp"); driver.findElement(By.id("goto_next")).click(); driver.quit(); } }
実行すると、今度は動きました。Firefoxが自動で立ち上がり、テスト実行後に自動的に終了します。