検索
連載

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

Chrome、Firefox、Internet Explorer、Opera、Android、iOSといったブラウザに対応し、Java、C#、Python、Rubyなどが使えるWebテスト自動化ツールの3つの特徴と環境、実装方法を簡単に紹介する【2017年の情報に合うように更新】。

PC用表示 関連情報
Share
Tweet
LINE
Hatena
前のページへ |       

Selenium WebDriver実装方法の概説

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

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

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 EmployeeManagerOpen

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


図3 Firefox用のWebDriverによって起動したFirefox

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


図4 Firefox用のWebDriverによって読み込まれた従業員一覧画面

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

 このようにWebDriverは、Webブラウザの起動→(Webブラウザに対する個別処理)→Webブラウザの終了という一連の流れを実行できます。

JUnitも一緒に使う

 サンプルコード1ではmainメソッドから記述していますが、JUnitを利用して下記(サンプルコード2)のような記述もできます。

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();
    }
}
サンプルコード2 EmployeeManagerOpenTest

Webブラウザ操作用のAPI一覧

 また、サンプルコード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<WebElement> 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<java.util.String> 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ドキュメントを参照してください。

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

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

■更新履歴

【2012/10/5】初版公開(後藤正規、株式会社ビーブレイクシステムズ)。

【2017/7/19】2017年の情報に合うように更新(今泉俊幸、株式会社ビーブレイクシステムズ)。


筆者紹介

今泉 俊幸(いまいずみ としゆき)

2011年から、株式会社ビーブレイクシステムズに在籍。

快適に仕事をするためには教育と自動テストこそが大事、という思いを抱き活動中


Copyright © ITmedia, Inc. All Rights Reserved.

前のページへ |       
ページトップに戻る