WebDriverを使ってみよう

WebDriverを使ってGoogle検索を行うコードは以下のようになる。ここではFirefoxDriverを使用しているが、他のブラウザを使用する場合でもドライバのインスタンス生成部分を修正するだけで同じように動作する。

WebDriver driver = new FirefoxDriver();
driver.get("http://www.google.co.jp/");

// 検索を実行
WebElement searchBox = driver.findElement(By.name("q"));
searchBox.sendKeys("マイコミジャーナル");
searchBox.submit();

// 検索画面のタイトルを取得
System.out.println(driver.getTitle());

// 検索結果のURLを取得
WebElement link = driver.findElement(By.linkText("マイコミジャーナル"));
System.out.println(link.getAttribute("href"));

ブラウザで表示されているHTMLのDOM要素を取得するにはfindElementメソッド(単一要素を取得する場合)もしくはfindElementsメソッド(要素のリストを取得する場合)を使用する。検索条件は引数に渡すByオブジェクトで指定する。Byオブジェクトにはid属性、name属性、class属性、タグ名、XPathなど検索条件を指定するためのstaticメソッドが定義されており柔軟な検索が可能だ。

ただし、XPathでの検索についてはブラウザによって若干挙動が異なるので注意して欲しい(詳細についてはこちらを参照)。

WebElement element = null;
// id属性で検索
element = driver.findElement(By.id("form_password"));
// name属性で検索
element = driver.findElement(By.name("password"));
// XPathで検索
element = driver.findElement(By.xpath("//input[@id='form_password']"));

このようにWebDriverでは比較的簡単なコードでWebブラウザの制御とDOMツリーの検索・操作を行うことができる。はじめてでもすぐに使いこなすことができるはずだ。