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ブラウザの終了という一連の流れを実行できます。
サンプルコード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();
}
}
また、サンプルコード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年の情報に合うように更新(今泉俊幸、株式会社ビーブレイクシステムズ)。
Selenium VBAを使って自動でブラウザーを操作してスクショをExcelに張り付けてみた
SeleniumのUIテスト自動化をiOS/AndroidにもたらすAppiumの基礎知識とインストール方法、基本的な使い方
JavaScriptテストの基礎知識と使えるフレームワーク6選Copyright © ITmedia, Inc. All Rights Reserved.