[Selenium2] 自動テストで、ダイアログもテストしてしまう
こんにちは、@yoheiMuneです。
今日は、Selenium第2弾として、Selenium1系では出来なかった、ダイアログの扱いを試してみました。
その内容を忘れないようにブログに残しておきたいと思います。
なお、Seleniumについてや、利用準備方法は、Selenium2を使ってWebテストを自動化に挑戦!!基本編を参考にしてみて下さい。
その制約の一つに、アラートダイアログなどが出るテストは自動的に出来ない。アラート出せるけど、アラートのボタンを押せないという問題点があったらしい。
Selenium2系では、動作がブラウザ外となった為、自由度が増えて、アラードダイアログなども扱えるようになったらしいです。
Javaでのそのサンプルコードを作成してみました。試してみたのは、以下の3種類です。
- アラートダイアログ(OKボタン)
- 確認ダイアログ(OKボタン/CANCELボタン)
- 入力ダイアログ(OKボタン/CANCELボタン/入力エリア)
上記のソースコードの中で、ポイントとなる部分は以下でしょうか。
■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系、もっと学んで行こっと。
今日は、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系、もっと学んで行こっと。



