[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系、もっと学んで行こっと。