画面テストの自動化にSelenium Webdriver

テストの自動化はモジュールのユニットテストまではできても、画面の自動化まで手が回っていないことが多いだろう。

画面のテスト自動化といえばSeleniumが有名だが、しばらく触れないうちにバージョン2になっており、進化していた。

WebDriverと組み合わせるとブラウザを外部から操作することができるので、人間の実機操作に近い挙動でテストができる。

とりあえず、適当な画面にアクセスして内部の要素を表示させるサンプル。
IDで見つけられればXpathは不要。

import java.io.File;
import java.util.List;

import org.apache.commons.io.FileUtils;
import org.openqa.selenium.By;
import org.openqa.selenium.OutputType;
import org.openqa.selenium.TakesScreenshot;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.Wait;
import org.openqa.selenium.support.ui.WebDriverWait;


public class SeleniuimTest {

	public static void main(String[] args) throws InterruptedException {
		WebDriver driver = new FirefoxDriver();
		driver.get("http://www.example.com/");
		// 30秒待つ設定
		Wait<WebDriver> wait = new WebDriverWait(driver, 30);
		// sideMenuという要素がクリックできるようになるまでまつ(ただし30秒)
		WebElement button = wait.until(ExpectedConditions
				.elementToBeClickable(By.className("sideMenu")));
		// firebugのxpathをそのままでOK
		System.out.println(driver.findElement(By.xpath("/html/body/div/div/div[2]/div[2]/div[1]/ul/li[1]/a")).getText());
		// 複数処理する場合
		List<WebElement> elements = driver.findElements(By.xpath("/html/body/div/div/div[2]/div[2]/div[1]/ul/li"));
		for (WebElement webElement : elements) {
			System.out.println(webElement.getText());
		}
		// スクリーンショットも取れる。
		try {
			FileUtils.copyFile(
					((TakesScreenshot) driver).getScreenshotAs(OutputType.FILE),
					new File("d:/screen.jpg"));
		} catch (Exception e) {
		}
		Thread.sleep(10000);
		driver.quit();
	}
}
カテゴリー: Selenium, Test タグ: , , パーマリンク

コメントを残す

メールアドレスが公開されることはありません。

Time limit is exhausted. Please reload the CAPTCHA.