Seleniumを利用したWebアプリケーションテストの自動化
Selenium2とは、Webアプリケーションのテストを自動化するツールです。Selenium2はコマンドやAPIを使って、Webアプリケーションの動作確認テストをプログラム化できます。2011年にSelenium1とGoogle社のWebアプリケーションテストツールの「WebDriver」が統合し、Selenium2となりました。
特徴
・ブラウザ上でボタンのクリックやフォーム入力の自動化
・画面のスクリーンショットの撮影の自動化
・自動テスト実行中に取得した値との正誤判定
開発経緯や開発者による苦労話
Selenium2についての情報が少なく、なかなか新機能の情報が得られず苦労しました。
自動テスト実行中、まだSelenium2が動作処理の命令をを行う対象となるHTML要素を認識できていない時に、動作処理の命令を出してしまいエラーになるということが度々ありました。対処法として指定した秒数間停止するseleniumのコマンドや、ページが読み込まれるまで待つAPIを使用して回避しました。
環境構築の手順
実行環境
・Windows 7、Google Chrome、Eclipse(JUnitテストの作成に使用)
・JDK1.7.0_11、Selenium-java-2.29.0、Selenium-server-2.29.0
・chromedriver_win__26.0.1383.0.zip(Google Chrome用ドライバー)
1. Selenium2とドライバーのダウンロード
1-1. seleniumダウンロードページからselenium-java-x.x.x.zipとselenium-server-x.x.x.zipをダウンロードし、任意の場所で解凍する。
1-2. chromium プロジェクトのダウンロードページからchromedriver_win__x.x.x.x.zipをダウンロードし、任意の場所で解凍
2. eclipseに新しいプロジェクトを作成
2-1. eclipseでプロジェクトを作成
2-2. JUnitライブラリをクラスパスにロード
2-3. selenium-java-x.x.x.jarとselenium-server-standalone-x.x.x.jarをビルド・パスに追加
3. クラスパス上にchromedriver.exeを配置
サンプルコード
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
package test.selen; import junit.framework.Assert; import org.junit.Test; import org.openqa.selenium.*; import org.openqa.selenium.chrome.ChromeDriver; public class SeleniumTest { protected WebDriver driver; @Test public void test() { System.setProperty("webdriver.chrome.driver", "lib/chromedriver.exe"); WebDriver driver = new ChromeDriver(); // Yahoo!JAPANのWebサイトに移動 driver.get("http://www.yahoo.co.jp/"); // タイトルがYahoo!JAPANか確認 Assert.assertEquals("Yahoo! JAPAN", driver.getTitle()); // テキストボックスに"selenium"と入力 driver.findElement(By.id("srchtxt")).sendKeys("selenium"); // 検索ボタンをクリック driver.findElement(By.id("srchbtn")).click(); driver.quit(); } } |