Selenium のWebDriverを利用したJUnit(Java)によるプログラミングの解説です。
サンプルや, 設定などは前回のブログ Selenium with JUnit を参照してください。
Web Driverのプログラムにおいて, 核となるクラス(インターフェイス)はたった2つです。(Waitも使いますが, とりあえず)
WebDriver : org.apache.selenium.WebDriver インターフェイス, Webブラウザのコントロールのコアクラス, ブラウザの初期設定, ブラウザタイトルの取得, HTML 要素の取得などを行います。
Selenium : com.thoughtworks.selenium.Selenium クラス Selenium IDEで利用していた関数をそのまま使えたりします。 つまり, click やtype などのブラウザ操作に利用できます。
※WebDriverは実際には, FirefoxDriverであったり, RemoteWebDriverであったり具体的なクラスが入ります。
プログラミングの細かい点を見ていきましょう
●初期化(Firefox)
Firefox profile = new Firefox
WebDriver driver = new FirefoxDriver(profile);
String baseURL = "http://localhost/index.html";
Selenium selenium = new WebDriverBackedSelenium(driver, baseURL); // これでSelenium のインスタンスが利用できる
※Firefoxでの初期化です。WebDriverをつくって, 最終的に Selenium のインスタンスを取得します
selenium でopen などを行って移動してくと, WebDriverは自動的に, そのページの情報を取得していきます
●要素の取得
WebElement element = driver.findElement(By.id("1st-id")); // id属性が 1st-id の要素を取得
List<WebElement> element = driver.findElements(By.id("multi-id"));
※findElementsだと複数取得できます。findElementの場合, 上から最初の要素となります
要素の特定には, By.xxx(""); を使いますおもなものをあげておきます。
By.id(""); // ID属性
By.linkText(""); // link つまり <a> の href属性
By.tagName(""); // <div> div などのタグの名前
By.className(""); // class属性
By.xPath(""); // XPath
By.cssSelector(""); // CSS セレクタ
By.name(""); // name属性
●URLを開く
selenium.open("/"); // / ルート(baseURL)を開く
selenium.waitForPageToLoad(TIMEOUT);
/ と指定した場合は, baseURLで設定した, URLを開きます。
base URLは通常は, テストしたい, Webページを書きます
"" 中にURLを書きます
ページをopenするときは, 必ず, waitForPageToLoadを入れましょう(引数はtimeout時間(ms)です)
ページのロード(描画)を待ちます。
●ボタンをクリック
selenium.click("name=fine"); // name属性が fineのボタンをクリック
※ 引数は, Selenium IDEであった4つの方法と同じ書き方になります。
●入力ボックスに値を入れる
selenium.type("//input[@class='test']", "Test"); // <input type="text" class="test"> にTestと入力
●終了処理
終了処理を行わないと, Webブラウザが開きっぱなしの状態になるので, JUnit (サンプルでは, @Afterで処理しました)以外の部分で利用する場合は, 必ず finally ブロックの中に入れましょう。
Selenium のインスタンス, WebDriverのインスタンスそれぞれclose()します
try
{
// ... Seleniumの処理
}
finally
{
selenium.close();
driver.close();
}
いかがでしたでしょうか, 次回は, Chromeの設定方法です。
0 件のコメント:
コメントを投稿