2011/12/25更新

[Selenium2] 自動テストで、ダイアログもテストしてしまう

このエントリーをはてなブックマークに追加            

こんにちは、@yoheiMuneです。
今日は、Selenium第2弾として、Selenium1系では出来なかった、ダイアログの扱いを試してみました。
その内容を忘れないようにブログに残しておきたいと思います。
なお、Seleniumについてや、利用準備方法は、Selenium2を使ってWebテストを自動化に挑戦!!基本編を参考にしてみて下さい。

タイトル画像




Selenium1系では出来なかったダイアログに関するテスト

Selenium1系では、ブラウザ内で動いていたため、様々な制約があったそうです。
その制約の一つに、アラートダイアログなどが出るテストは自動的に出来ない。アラート出せるけど、アラートのボタンを押せないという問題点があったらしい。
Selenium2系では、動作がブラウザ外となった為、自由度が増えて、アラードダイアログなども扱えるようになったらしいです。
Javaでのそのサンプルコードを作成してみました。試してみたのは、以下の3種類です。
- アラートダイアログ(OKボタン)
- 確認ダイアログ(OKボタン/CANCELボタン)
- 入力ダイアログ(OKボタン/CANCELボタン/入力エリア)


importjava.io.File;
import org.openqa.selenium.Alert;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.firefox.FirefoxDriver;

publicclass Test002_Popup {

  publicstaticvoid main(String[] args) throws Exception {

    // create test driver and open the page.
    WebDriver driver = new FirefoxDriver();
    driver.get("http://yoheim.net/labo/selenium/popup.html");

    WebElement btn = null; // set in every test case.
    WebElement out = driver.findElement(By.id("output"));
    

    /*
     * ALERT DIALOG
     */
    btn = driver.findElement(By.id("btnAlert"));
    // click button and open the alert dialog.
    btn.click();
    // check the alert dialog message.
    Alert alert = driver.switchTo().alert();
    System.out.println("alert message: " + alert.getText());
    // click "OK" button and check message that will appear after dismissing alert.
    alert.accept();
    System.out.println("output: " + out.getText());
    
    
    /*
     * CONFIRM DIALOG
     */
    btn = driver.findElement(By.id("btnConfirm"));
    btn.click();
    Alert confirm = driver.switchTo().alert();
    System.out.println("confirm message: " + confirm.getText());
    // click "OK" button.
    confirm.accept();
    System.out.println("output: " + out.getText());
    btn.click();
    confirm = driver.switchTo().alert();
    // click "CANCEL" button.
    confirm.dismiss();
    System.out.println("output: " + confirm.getText());

    
    /*
     * Prompt
     */
    btn = driver.findElement(By.id("btnPrompt"));
    btn.click();
    Alert prompt = driver.switchTo().alert();
    // set the prompt message.
    prompt.sendKeys("This is sample message.");
    prompt.accept();
    System.out.println("output: " + out.getText());
    btn.click();
    prompt = driver.switchTo().alert();
    prompt.sendKeys("This is sample message.");
    prompt.dismiss();
    System.out.println("output: " + out.getText());
  }
}

上記のソースコードの中で、ポイントとなる部分は以下でしょうか。

■Alert alert = driver.switchTo().alert();
 このコードで、出現しているダイアログを取得します。

■alert.getText();
 ダイアログに出力されているメッセージを取得します。

■prompt.accept();
 ダイアログのOKボタンを押します。

■prompt.dismiss();
 ダイアログのキャンセルボタンを押します。

■prompt.sendKeys("This is sample message.");
 ダイアログの入力エリアに、文字列を入力します。




参考情報

以下の情報を参考にしました。ありがとうございます。
http://seleniumhq.org/docs/02_selenium_ide.html#alerts-popups-and-multiple-windows
http://seleniumhq.org/docs/03_webdriver.html#popup-dialogs




最後に

Selenium2系は、ホントに便利そうな気がしてきました。
もっと使ってみて、実際のテストでも密かにやってみたい気がしてきました(*´∇`*)
Selenium2系、もっと学んで行こっと。






こんな記事もいかがですか?

RSS画像

もしご興味をお持ち頂けましたら、ぜひRSSへの登録をお願い致します。