09.その他‎ > ‎

Seleniumを利用したWebアプリケーションテストの自動化

 本記事の最新版はこちらです。
本サイトは今後更新されませんのでご注意ください。

 プラットフォーム  Webアプリケーション全般
Selenium2とは、Webアプリケーションのテストを自動化するツールです。Selenium2はコマンドやAPIを使って、Webアプリケーションの動作確認テストをプログラム化できます。2011年にselenium1Google社のWebアプリケーションテストツールの「WebDriver」が統合し、selenium2となりました。

 特徴

  • ブラウザ上でボタンのクリックやフォーム入力の自動化
  • 画面のスクリーンショットの撮影の自動化
  • 自動テスト実行中に取得した値との正誤判定

 開発経緯や開発者による苦労話

selenium2についての情報が少なく、selenium2で新たに追加された機能を使おうとすると、なかなか必要な情報が得られず苦労しました。

自動テスト実行中、まだselenium2が動作処理の命令をを行う対象となるHTML要素を認識できていない時に、動作処理の命令を出してしまいエラーになるということが度々ありました。対処法として指定した秒数間停止するseleniumのコマンドや、ページが読み込まれるまで待つAPIを使用して回避しました。

 環境構築の手順
  • 実行環境

    Windows 7、Google Chrome、EclipseJUnitテストの作成に使用)

    JDK1.7.0_11、Selenium-java-2.29.0、Selenium-server-2.29.0

    chromedriver_win__26.0.1383.0.zip(Google Chrome用ドライバー)

  1. Selenium2とドライバーのダウンロード
    1. seleniumダウンロードページからselenium-java-x.x.x.zipselenium-server-x.x.x.zipをダウンロードし、任意の場所で解凍する。
    2. chromium プロジェクトのダウンロードページからchromedriver_win__x.x.x.x.zipをダウンロードし、任意の場所で解凍
  2. eclipseに新しいプロジェクトを作成
    1. eclipseでプロジェクトを作成
    2. JUnitライブラリをクラスパスにロード
    3. selenium-java-x.x.x.jarselenium-server-standalone-x.x.x.jarをビルド・パスに追加
  3. クラスパス上にchromedriver.exeを配置

 サンプルコード

package test.selen;

import junit.framework.Assert;

import org.junit.Test;

import org.openqa.selenium.*;

import org.openqa.selenium.chrome.ChromeDriver;


public class SeleniumTest {

    protected WebDriver driver;

    @Test

    public void test() {

        System.setProperty("webdriver.chrome.driver", "lib/chromedriver.exe");

        WebDriver driver = new ChromeDriver();

        //  Yahoo!JAPANWebサイトに移動

        driver.get("http://www.yahoo.co.jp/");

        // タイトルがYahoo!JAPANか確認

        Assert.assertEquals("Yahoo! JAPAN", driver.getTitle());

        // テキストボックスに"selenium"と入力

        driver.findElement(By.id("srchtxt")).sendKeys("selenium");

        // 検索ボタンをクリック

        driver.findElement(By.id("srchbtn")).click();

        driver.quit();

    }

}

 まとめ

 seleniumは、繰り返しテストするほどメリットが大きくなる有益なテストツールです。自動テストの作成には工数を要しますが、UIテストは頻繁に行うものなので、是非活用してみてください。