iPhone/Android含むブラウザ自動テストの最終兵器Selenium WebDriverとは:Selenium WebDriverでWebアプリのテストが変わる(前編)(2/2 ページ)
Chrome、Firefox、Internet Explorer、Opera、Android、iOSといったブラウザに対応し、Java、C#、Python、Rubyなどが使えるWebテスト自動化ツールの3つの特徴と環境、実装方法を簡単に紹介する【2017年の情報に合うように更新】。
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の【1】を実行すると、図3のようにFirefoxが起動することが確認できます。
続いて【2】のコードが実行されると、図4のように引数のURLのデータを【1】で起動したWebブラウザで読み込みます。
さらに【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(); } }
Webブラウザ操作用のAPI一覧
また、サンプルコード1、2では画面を開くAPI(get()メソッド)のみを使用していますが、org.openqa.selenium.WebDriverでは、その他にもWebブラウザ操作用のAPIが幾つか用意されています(表2参照)。
返り値 | メソッド | 処理概要 | |
---|---|---|---|
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年の情報に合うように更新(今泉俊幸、株式会社ビーブレイクシステムズ)。
Copyright © ITmedia, Inc. All Rights Reserved.
関連記事
- Selenium VBAを使って自動でブラウザーを操作してスクショをExcelに張り付けてみた
システム開発におけるソフトウェアテスト(結合テスト〜システムテスト)において重要視されるエビデンス(作業記録)。前後編の2回にわたって、エビデンスとしてスクリーンショットをキャプチャし、テスト仕様書や納品書に張り付けていく作業を自動化するためのVBA/マクロのテクニックを紹介する。前編はSelenium VBAのインストール方法と使い方、スクリーンショットを自動でExcelに張り付ける方法について。 - SeleniumのUIテスト自動化をiOS/AndroidにもたらすAppiumの基礎知識とインストール方法、基本的な使い方
本連載では、AndroidおよびiOSアプリ開発における、システムテストを自動化するツールを紹介していきます。今回は、オープンソースのモバイルテスト自動化ツール「Appium」の特徴やインストール方法、基本的な使い方を説明します。 - JavaScriptテストの基礎知識と使えるフレームワーク6選
しっかりとJavaScriptの“テスト”を行うために、最近のJavaScript事情やテストを取り巻く環境、今注目のテストフレームワークを6つ紹介する