2012年3月6日火曜日

webdriverでのalert検証方法

Alert al = driver.switchTo().alert();
と記述すると画面上にalert、及びconfirm等が表示されている場合にオブジェクトを取得できる。

alert、及びconfirmが表示されていない場合、NoAlertPresentExceptionが発生する(chromeの場合はchromedriver.exeを使用しているため、WebDriverExceptionも発生する)ため、例外処理を行わなければいけない。

また、chromeの場合は alertが表示されていないのに、driver.switchTo().alert()を実行すると『No modal dialog is showing』とSystem.errに出力されてしまう。(非常に不細工)
これもchromedriver.exeを使用しているためである。

なので、これが嫌なら一旦
Selenium selenium=new WebDriverBackedSelenium(driver,baseUrl);
selenium.isAlertPresent()
と実行し、alertが表示されているかどうか確認してから、driver.switchTo().alert()を実行すればいい。

ただし、新しめのブラウザではSeleniumクラスはまともに動作しない可能性があるので注意。
また、selenium2 ver2.20から実行出来るようになった
Alert al = (new WebDriverWait(driver, time)).until(ExpectedConditions.alertIsPresent())
という方法は、FireFoxなどで設定した秒数(time)分だけ待機してくれない現象がある(?)ので
要注意。
selenium.isAlertPresent()で確認してから実行するが吉、かと思いきや、alertが表示されている時に
isAlertPresent を実行すると、alert表示されてるからjavascript実行出来ないよ的な
SeleniumExceptionが発生する。なんだそりゃ。

org.openqa.selenium.internal.seleniumemulation.AlertOverrideを使用すれば、もっといろいろできるかもしれない。

0 件のコメント:

コメントを投稿