読者です 読者をやめる 読者になる 読者になる

Selenium 2でChromeDriverを使う

Selenium Java

WebアプリケーションのテストにSeleniumを使っていますが、少し前になりますがSelenium 2が正式にリリースされたので試しています。Selenium 2は、WebDriverベースとなりアーキテクチャ的にも大きく変更されています。Selenium RCで使用していたSeleniumServerは不要になっています。JUnitから使用する場合には、
Selenium 2.0 and WebDriver ― Selenium Documentation
このドキュメントにあるとおりMavenのdependencyにselenium-javaを追加し、

<dependency>
        <groupId>org.seleniumhq.selenium</groupId>
        <artifactId>selenium-java</artifactId>
        <version>2.5.0</version>
</dependency>

テストコードで以下のようにブラウザを起動します。WebDriverそのままのAPIですね。

WebDriver driver = new FirefoxDriver();
driver.get("http://www.google.com");

これでFirefoxGoogleのページが表示されます。Chromeを使用する場合には、FirefoxDriverをChromeDriverに変更すればよいのですが、それだけだと以下のような例外が発生します。

java.lang.IllegalStateException: The path to the chromedriver executable must be set by the webdriver.chrome.driver system property; for more information, see http://code.google.com/p/selenium/wiki/ChromeDriver. The latest version can be downloaded from http://code.google.com/p/chromium/downloads/list
	at com.google.common.base.Preconditions.checkState(Preconditions.java:172)
	at org.openqa.selenium.chrome.ChromeDriverService.createDefaultService(ChromeDriverService.java:86)
	at org.openqa.selenium.chrome.ChromeDriver.(ChromeDriver.java:87)

Chromeの場合には、メセージにあるとおりChromiumのサイトから、別途、プラットフォーム毎の実行ファイルをダウンロードした上でそのパスをシステムプロパティで指定する必要があります。

System.setProperty("webdriver.chrome.driver","lib/chromedriver/win32/chromedriver.exe");
WebDriver driver = new ChromeDriver();

Seleniumのドキュメントは、これまでのSeleniumHQと元WebDriverのGoogleCodeのサイトに別れてしまっているので、ちょっと見づらいですね。ChromeDriverについては、こちらにあります。