Selenium WebDriverのインストール~動かしてみる
- HTML5 APIs
- UI ライブラリ
- テスト支援
- ドキュメント
- コード品質ツール
- バリデータ
- キー入力支援
- テストダブル
- ハイブリッドアプリケーション
- 継続的インテグレーション
Pitaliumを使用した環境構築の場合はこちら
Selenium WebDriverとは
Googleが開発したWebアプリケーション用テストフレームワークです。2011年にSeleniumプロジェクトに統合されました。
2018年8月現在の最新バージョンは、3.13.0です。
テスト環境
- 開発環境
- Windows7 64bit SP1
- Eclipse Pleiades All in One 4.6.2
- jdk 8u172
- 対象ブラウザ
- Chrome 68.0.3440.84
- ライブラリ等
- selenium-java 3.13.0
- ChromeDriver 2.41
- JUnit 4.12
- hamcrest-core 1.3
手順
PCブラウザ(Google Chrome)でテストを行う
- Seleniumのサイトから最新のライブラリをダウンロードします。今回は「selenium-java-3.13.0.zip」をダウンロードします。
- Eclipseを起動後、新規Javaプロジェクトを作成します。今回はプロジェクト名を「WebDriverTest」とします。
- WebDriverプロジェクト直下に「lib」フォルダを作成します。
- ダウンロードしたzipファイルを解凍すると以下のファイルとフォルダがあるので、libsフォルダ内のjar全てと、client-combined-3.13.0.jarをWebDriverプロジェクトのlibフォルダにコピーします。
- libs
- CHANGELOG
- client-combined-3.13.0.jar
- client-combined-3.13.0-sources.jar
- LICENSE
- NOTICE
- libフォルダにコピーしたjarを全て、クラスパスに追加します。
- WebDriverプロジェクトを右クリックし、[プロパティ]から[Javaのビルド・パス]を選択します。
- ライブラリータブから「jar追加(J)」ボタンを押します。
- フォルダーツリーからWebDriver/lib以下のjarを選択し「OK」ボタンを押します。
- プロパティ画面に戻るので、「OK」ボタンを押してプロパティを閉じます。
- テストクラスの格納するパッケージを作成します。
- srcパッケージフォルダに任意の名称のパッケージを作成します。今回はパッケージ名を「com.htmlhifive.sample」とします。
- Google Chromeがインストールされていない場合は、ここからダウンロードして下さい。
- Google ChromeをWebDriverから起動するにはchromedriver.exeが必要です。ここから、ダウンロードして下さい。
今回使用しているOSはWindows7の64ビットですが、64bit専用のchromedriverが無いため、32ビット版のChromeDriver 2.41「chromedriver_win32.zip」をダウンロードします。
ダウンロードしたchromedriver_win32.zipを解凍するとchromedriver.exeが作成されるので、WebDriverTestプロジェクト直下に「driver」フォルダを新規作成し、ここにchromedriver.exeを置きます。
この時点で、プロジェクトは以下のような構成になっています。
- 単体テストを行うためのツール「JUnit」をダウンロードします。JUnitからJUnit4をダウンロードして下さい。
- Download and install からjunit.jar、hamcrest-core.jarの最新版のjarをダウンロードします。
- ダウンロードしたjarをlibフォルダにコピーして、クラスパスに追加します。
- JUnitを使用してテストケースを作成します。
以下のテストシナリオで実装を行います。- http://www.htmlhifive.com/conts/web/view/Main/WebHome をGoogle Chromeで開く。
- 「コンテンツ」の一覧にある「チュートリアル」のリンクをクリックする。
- 「チュートリアル」のページが表示されることを確認する。
- com.htmlhifive.sampleパッケージに「HifiveSiteTest.java」を作成しテストコードを実装します。コードは以下のとおりです。
package com.htmlhifive.sample;
import static org.junit.Assert.assertEquals;
import org.junit.After;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.interactions.Actions;
import org.openqa.selenium.support.ui.ExpectedCondition;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.WebDriverWait;
public class HifiveSiteTest {
private WebDriver driver;
@BeforeClass
public static void Setup() {
System.setProperty("webdriver.chrome.driver", "./driver/chromedriver.exe");
}
@Before
public void testBefore() {
driver = new ChromeDriver();
}
@After
public void testAfter() {
driver.quit();
}
@Test
public void test1() {
// ページを開く
driver.get("http://www.htmlhifive.com/conts/web/view/Main/WebHome");
// 「ガイド」タブの上にマウスオーバーする
WebElement elGuide = driver.findElement(By.cssSelector(".guide>.tab>span"));
Actions action = new Actions(driver);
action.moveToElement(elGuide).perform();
// バルーンが表示されるまで待機する
WebElement elBalloon = driver.findElement(By.cssSelector(".guide>.balloon"));
WebDriverWait wait = new WebDriverWait(driver, 10);
wait.until(new ExpectedCondition<Boolean>() {
public Boolean apply(WebDriver driver) {
return elBalloon.isDisplayed();
}
});
// 表示されたバルーンの「チュートリアル」をクリックする
WebElement elTutorial = driver.findElement(By.className("tutorial"));
if (driver.getCapabilities().getBrowserName().toLowerCase().equals("internet explorer")) {
// IEでのテスト時はマウスカーソルがブラウザ上にないとバルーンが表示されない
// IEではsendKeysでEnterしないとチュートリアルのページが表示されない
elTutorial.sendKeys(Keys.ENTER);
} else {
elTutorial.click();
}
// チュートリアルのページが表示されていることを確認する
wait = new WebDriverWait(driver, 10);
WebElement elTitle = wait.until(ExpectedConditions.visibilityOfElementLocated(By.id("document-title")));
assertEquals("チュートリアルページが表示されていること。", elTitle.getText(), "チュートリアル");
}
} - テストケースを実行します。
HifiveSiteTest.java上で右クリックを押し、メニューから「実行」->「JUnitテスト」から実行します。
テストが実行され以下のようになっていれば成功です。
Android端末でテストを行う
※ 古い記述になっています。
新しいチュートリアルをご覧ください。Appiumを使ったAndroid・iOSでのテスト
※ PCブラウザのテスト実行手順で作成した、WebDriverTestプロジェクトを使用します。
- Seleniumのサイトから、android-serverのapkファイルを取得します。今回は最新版のandroid-server-2.32.0.apkを使用します。
- Androidのサイトから、Android SDKをダウンロードし、Cドライブ直下にインストールします。(パスはC:\android-sdkとなっていること)
- Android SDKをインストール後、Android SDKで使用する環境変数を設定します。
- 変数名: ANDROID_SDK 値: C:\android-sdk
- 環境変数PATHに以下の値を追加します。
- %ANDROID_HOME%\platform-tools;
- com.htmlhifive.sampleパッケージに「HifiveSiteTestAndroid.java」を作成し、テストコードを実装します。シナリオはHifiveSiteTest.javaと同じです。
コードは以下のとおりです。
package com.htmlhifive.sample;
import static org.junit.Assert.assertEquals;
import org.junit.Test;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.android.AndroidDriver;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.WebDriverWait;
public class HifiveSiteTestAndroid {
@Test
public void test1() {
WebDriver driver = new AndroidDriver();
driver.get("http://www.htmlhifive.com/conts/web/view/Main/WebHome");
WebElement elTutorial = driver.findElement(By.linkText("チュートリアル"));
elTutorial.click();
WebDriverWait wait = new WebDriverWait(driver, 10);
WebElement elTitle = wait.until(ExpectedConditions.visibilityOfElementLocated(By.id("document-title")));
assertEquals("チュートリアルページが表示されていること。", elTitle.getText(), "tutorial");
driver.quit();
}
}
- Micro USBケーブルでPCと実機を接続後、コマンドプロンプトで以下のコマンドを実行し、android-server-2.32.0.apkをテスト端末にインストールします。
- adb install android-server2.32.0.apk
※ もし、OSがAndroid端末を認識しない場合は、テスト端末の製造元サイトからドライバをダウンロードして、PCにインストールして下さい。
- adb install android-server2.32.0.apk
- 端末でWebDriverのアプリケーションを起動します。
- コマンドプロンプトで以下のコマンドを実行し、端末からテストページにアクセスできるようにします。
- adb forward tcp:8080 tcp:8080
- テストケースを実行します。
HifiveSiteTestAndroid.java上で右クリックを押し、メニューから「実行」->「JUnitテスト」から実行します。
テストが実行され以下のようになっていれば成功です。