如何在 selenium 中接受 java 小程序警告警报?

How to accept java applet warning alert in selenium?

我有一个要测试的网页,其中还有一个 java 小程序 runs.When 我登录到该页面需要 30 到 50 秒才能加载 java 小程序并且它当我 运行 我的 selenium 脚本时显示 java 未签名的小程序安全性 alert.So,每当此警报 popped.I 无法接受 java 警报时,执行就会停止因为不知道什么时候会爆

所以我的问题是,我被迫等到我的小程序加载小程序警报来了,接受它然后执行我的 steps.Is 有一种方法可以写一个监听器之类的东西,这样每当java 出现安全警报它应该自动接受警报并继续执行我的脚本。

如果您知道何时何地...应该很容易预测警报消息的出现并调用 acceptAlert(或不确定哪个是正确的方法名称)。

否则,您应该能够为 isAlertPresent 编写条件(同样我不确定确切的方法名称,因为我对 phpUnit 比 java selenium 更熟悉)。如果存在,您可以根据需要采取行动解除所述警报。

我几个月前在 PHP 中解决了这个问题,当时我认为警报可能在那里,以获取其文本。如果 getText returns 个字符,则确实存在警报,您应该能够接受或关闭它。

如果我正确理解你的问题,你想轮询屏幕上是否存在警报。

为了正确等待 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() );