如何在selenium中接受java applet警告警报?

时间:2015-03-27 13:52:37

标签: java selenium selenium-webdriver applet alert

我有一个要测试的网页,其中一个java applet也会运行。当我登录到页面时,加载java applet需要30到50秒,它显示java unsigned applet安全警报。所以当我运行时我的selenium脚本,只要这个警告弹出,执行就会停止。我无法接受java警报,因为我不知道它什么时候会弹出。

所以我的问题是,我被迫等到我的applet加载applet alert来,接受它然后执行我的步骤。有没有办法写一个监听器类的东西,以便每当java安全警报来时它应该自动接受警报并继续执行我的脚本。

2 个答案:

答案 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() );