連載
» 2012年10月05日 20時13分 UPDATE

Selenium WebDriverでWebアプリのテストが変わる(前編):iPhone/Android含むブラウザ自動テストの最終兵器Selenium WebDriverとは (2/2)

[後藤正規,ビーブレイクシステムズ]
前のページへ 1|2       

Selenium WebDriver実装方法の概説

 Selenium WebDriverを利用したプログラムは冒頭で説明したように、WebDriverのAPIを用いてWebブラウザを操作していきます。

 例えば、下記のサンプルコードはFirefox用のWebDriverを利用して、テスト用のWebサイトを開き、閉じる処理を行っています。サンプルコードはJavaを使用しています。

サンプルコード1 EmployeeManagerOpen

package open;
 
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
 
public class EmployeeManagerOpen {
 
    public static void main(String[] args) {
        WebDriver driver = new FirefoxDriver();//…【1】
        driver.get("http://localhost:8080/EmployeeManager/index.jsp");//…【2】
        driver.quit();//…【3】
    }
}

 まず、サンプルコード1の【1】を実行すると、図3のようにFirefoxが起動することが確認できます。

jo_image03.gif 図3 Firefoxドライバによって起動したFirefoxWebブラウザ

 続いて【2】のコードが実行されると、図4のように引数のURLのデータを1-?で起動したWebブラウザで読み込みます。

jo_image04.gif 図4 Firefoxドライバによって読み込まれた従業員一覧画面

 さらに【3】が実行されると、起動していたFirefoxWebブラウザが閉じることを確認できます。

 このように、WebDriverはWebブラウザの起動〜(Webブラウザに対する個別処理)〜Webブラウザの終了までの一連の流れを実行できます。サンプルコード1ではmainメソッドから記述していますが、JUnitを利用して下記(サンプルコード2)のような記述もできます。

サンプルコード2 EmployeeManagerOpenTest

package open;
 
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
 
public class EmployeeManagerOpenTest {
    
    private  WebDriver driver;
 
    @Before
    public void beforeTest() {
        driver = new FirefoxDriver();
    }
 
    @Test
    public void open() {
        driver.get("http://localhost:8081/EmployeeManager/index.jsp");
    }
 
    @After
    public void afterTest() {
        driver.quit();
    }
}

 また、サンプルコード1、2では画面を開くAPI(get()メソッド)のみを使用していますが、org.openqa.selenium.WebDriverでは、その他にもWebブラウザ操作用のAPIがいくつか用意されています(表2参照)。

表2 JavaのWebDriver APIの概要
返り値 メソッド 処理概要
void close() 現在handleしているWebブラウザウィンドウを閉じる
org.openqa.selenium.WebElement findElement(By by) 現在のWebブラウザページ内において、引数の手法でWebElementを探し、最初に取得されたものを返却
java.util.List findElements(By by) 現在のWebブラウザページ内において、引数の手法でWebElementを探し、取得されたものすべてをListに詰めて返却
void get(String url) 引数で指定されたURLを読み込む
java.lang.String getCurrentUrl() 現在のWebブラウザページで表示しているURLを表す文字列を取得
java.lang.String getPageSource() 最後に読み込んだページのソースを取得
java.lang.String getTitle() 現在のブラウザページで表示しているURLを表す文字列を取得
java.lang.String getWindowHandle() 現在のWebブラウザウィンドウを表す文字列を表示(この文字列は複数ウィンドウを開いている場合などに、遷移する先のウィンドウ指定用に使用)
java.util.Set getWindowHandles() 現在開いているすべてのWebブラウザウィンドウを表す文字列を取得
org.openqa.selenium.WebDriver.Options manage() オプションインターフェイスを取得
org.openqa.selenium.WebDriver.Navigation navigate() Webブラウザの履歴情報へアクセス
void quit() Webブラウザウィンドウをすべて閉じる
org.openqa.selenium.WebDriver.TargetLocator switchTo() WebDriverの管理対象を別フレーム、または別ウィンドウへ移動用のインターフェイスを取得

 表では、JavaにおけるWebDriverの大まかな概要のみを記述しています。詳細な情報はSelenium WebDriverの各言語APIドキュメントを参照してください。

後編は、サンプルアプリとテストケース

 ここまででサンプルを動かすうえでの前提環境と実装方法の概要を説明しました。後編は、サンプルアプリケーションとテストケースについて説明します。

筆者プロフィール

後藤正規

株式会社ビーブレイクシステムズに在籍。

業務システムのパッケージソフト(MA-EYES)の製品開発に従事する。使い慣れた技術を使うのが好きなプログラマだが、普段使わない技術から学ぶことの多さに気付き、新たな技術を身に付けるべく最近はさまざまなものに手を出し始めている


前のページへ 1|2       

Copyright© 2017 ITmedia, Inc. All Rights Reserved.

@IT Special

- PR -

TechTargetジャパン

この記事に関連するホワイトペーパー

Focus

- PR -

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。