【使い方】Selenium2 WebDriverが便利【JAVA】

テストの自動化ツールは色々ありますが、
Selenium2はとても便利です。
色んなバージョンがあってFireFoxのアドオンで
シナリオ作ったりできますが私はJAVAエンジニアなので
Javaで好き勝手にかけるSelenium2はとても便利です。

テストの自動化はもちろん、
試験データの作成などにも活躍しています。

Apache POIを使えばExcelから値を抽出したり結果を書いたりもできるので
設計書の項目一覧に文字数や必須有無なので
チェック仕様と正常系の値を記載して
設計書を書けば画面レベルの単体試験を自動化したり、
データパターンシートを作成して網羅チェックをしたりしています。

簡単な使い方を記載。

現場で使えるソフトウェアテスト Java編

現場で使えるソフトウェアテスト Java編


●まずはダウンロード
公式サイトよりselenium-java-2.35.0.zip(執筆時点)をダウンロードして
Zip内のselenium-java-2.35.0.jarとlibsの中にあるjarファイルを
クラスパスに追加

●ブラウザ用のドライバーをダウンロード
以下のサイトよりテストで使いたいブラウザのドライバーを
ダウンロードしてzipの中身を任意のフォルダに保存。

IE用ドライバ

Chrome用ドライバ

●実装する

?ドライバーのPATHの設定とインスタンス
System.setProperty("webdriver.chrome.driver","tmp/chromedriver.exe");
WebDriver webDriver = new WebDriver(new ChromeDriver());

IEの場合は以下となる。
System.setProperty("webdriver.ie.driver","tmp/IEDriverServer.exe");
webDriver = new WebDriverWrapper(new InternetExplorerDriver());


?ブラウザの操作

// 指定したURLを開く
webDriver.get("http://yahoo.co.jp");

// HTML上の要素を取得
WebElement element = findElementWrap(By.id("loginId"));
⇒By.nameやBy.xpathが利用可能。
 xpathは以下のようにChromeの要素を検証機能で簡単に取得できるので便利。
※該当要素が存在しないと例外が出るので注意!

// 要素を操作する
1: テキストエリアに値を入力
element.sendKeys("あいうえお");

2: クリックイベントを発生
element.click();

3: サブミットイベントの発生。(form配下の任意のタグでOK)
element.submit();

4: プルダウンを選択
new Select(element).selectByVisibleText("プルダウンのラベル");

5: フォーカスをあてる
Actions builder = new Actions(webDriver);
builder.moveToElement(element).perform();

6: 異なるフレームを選択
String currentWindowId = webDriver.getWindowHandle();
webDriver.switchTo().frame("フレーム名");

7: 別窓を開くイベントを実行して開いた窓を制御する
String currentWindowId = webDriver.getWindowHandle();
element.click();
(new WebDriverWait(this, 10)).until(new ExpectedCondition() {
public Boolean apply(WebDriver d) {
return d.getWindowHandles().size() > 1;
}
});
String newWindowId = null;
for (String id : this.getWindowHandles()) {
if (!id.equals(currentWindowId)) {
newWindowId = id;
}
}
webDriver newWindowDriver = new webDriver((
webDriver.switchTo().window(newWindowId)));


// ブラウザを閉じる
webDriver.quit();
※閉じないとプロセスが残り続けます。


要素がないとnullが出たり、
フレームやWindowの切り替えなど色々書かなきゃいけないので
私はWebDriverのWrapperクラスを自作して使っています。
このクラスを見てみたい方はコメント欄で連絡下さい。

Effective Java 第2版 (The Java Series)

Effective Java 第2版 (The Java Series)