我有一个要测试的网页,其中一个java applet也会运行。当我登录到页面时,加载java applet需要30到50秒,它显示java unsigned applet安全警报。所以当我运行时我的selenium脚本,只要这个警告弹出,执行就会停止。我无法接受java警报,因为我不知道它什么时候会弹出。
所以我的问题是,我被迫等到我的applet加载applet alert来,接受它然后执行我的步骤。有没有办法写一个监听器类的东西,以便每当java安全警报来时它应该自动接受警报并继续执行我的脚本。
答案 0 :(得分:0)
如果您知道何时何地......应该很容易预测警报消息的外观并调用acceptAlert(或者正确的方法名称,不确定)。
否则,您应该能够为isAlertPresent写一个条件(再次,我不确定确切的方法名称,因为我比php selenium更熟悉phpUnit)。如果您愿意,如果存在,您可以采取行动解除所述警报。
我几个月前在PHP中已经解决了,当时我认为警报可能存在,以获取其文本。如果getText返回字符,那么确实存在警报,您应该能够接受它或将其解除。
答案 1 :(得分:0)
如果我理解你的问题,你想在屏幕上查看警报的存在。
要正确等待Alert,您可以专门为它实现WebDriverWait:
WebDriverWait wait = new WebDriverWait(driver, 5); //5 seconds wait
element.click() //trigger for alert to appear
wait.until(ExpectedConditions.alertIsPresent());
现在您可以处理警报:
Alert alert = driver.switchTo().alert();
alert.accept(); //Accepting the alert
当然,根据this,而不是接受你可以做其他事情。
此外,您可以实现一些简单的警报验证,如下所示:
public Boolean isAlertExistAndAccepted(WebDriver driver) {
try {
Alert alert = driver.switchTo().alert();
alert.accept();
return true;
} catch (NoAlertPresentException e) {
return false;
}
}
在do-while机制中就像这样:
do {
} while ( !isAlertExist() );