4 WebDriverの使い方
以下に基本的な使い方をまとめました。記事にサンプルコード(GoogleTest.java)を添付していますので、参考にしてください。
4.1 ブラウザの起動・終了
// ブラウザの起動 WebDriver driver = new FirefoxDriver(); // ブラウザの終了 driver.quit();
4.2 URLを指定してページを開く
driver.get("https://www.google.co.jp/");
4.3 要素を取得する
// id属性で指定 WebElement element = driver.findElement (By.id("lst-ib")); // name属性で指定 WebElement element = driver.findElement(By.name("q")); // リンクテキストで指定 WebElement element = driver.findElement(By.linkText("Selenium - Web Browser Automation")); // CSSセレクタで指定 WebElement element = driver.findElement( By.cssSelector("#header li:nth-of-type(1)"));
4.4 クリックする
element.click();
4.5 文字を入力する
element.sendKeys("Selenium");
4.6 値を検証する
WebDriverで値を取得してJUnitで検証を行います。
String actual = driver.findElement(By.cssSelector("#header li:nth-of-type(1)")).getText(); assertEquals("タブ名がAboutであること", "About", actual);
4.7 スクリーンショットをとる
基本的には、スクロール部分を含めて1枚の画像として取得することができます。
File screenshotFile = ((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE); FileHandler.copy(screenshotFile, new File("./screenshot001.png"));
ここで取得したスクリーンショットは「screenshotFirefox.png」としてサンプルファイルに同梱してあります。
2013年10月現在、以下のケースでスクロール部分がキャプチャできない不具合が報告されています。
-
Chromeを使用した場合:
【参考】Issue 294:ChromeDriver2 take screenshot is not full page -
IE10×Win7(64bit)×Internet Explorer Driver Server32bitの組み合わせで使用した場合:
【参考】Issue 5876:Screenshot taken using 32-bit IE driver is truncated while it is complete when using 64bit
5 主な情報源
- Selenium HQ:公式サイトです。
- selenium - Browser automation framework - Google Project Hosting:ソースコードやIssueTrackingはGoogle Codeで管理されています。最新情報はこちらから取得しましょう。
- WebDriver javadocs:WebDriverのjavadocsです。
- TipsAndTricks - selenium - Tips and tricks for using WebDriver:Google Code上のWikiには有用な情報が掲載されています。まずTipsAndTricksのページに目を通してみましょう。
- 公式Twitter:最新情報はSeleniumの公式Twitterでチェックしましょう。
- Posts containing 'selenium' - Stack Overflow:プログラミングに関するQ&AサイトであるStack Overflowにもさまざまな情報が蓄積されています。
6 終わりに
第2回では、Selenium IDEとSelenium WebDriverのインストールと簡単な使い方、メジャーなブラウザ(IE、Chrome、Firefox)での動作確認方法についてご紹介しました。初めてSeleniumに触れた方も、Selenium自体は簡単だと感じていただけたのではないでしょうか。 次回以降はSeleniumを活用していく上でポイントとなる点についてご紹介していきます。第3回は「Jenkins連携による継続的インテグレーション」です。どうぞお楽しみに。