java - Selenium webdriver 显式等待警报抛出 UnhandledAlertException

标签 java selenium exception alert

我必须明确等待 20 秒才能出现警报。如果 20 秒后警报不存在,我应该抛出异常。以下是我等待警报,但它在 20 秒之前抛出未处理的警报异常。有人可以帮我解决这个问题吗?

try {
    new WebDriverWait(driver, 20).ignoring(NoAlertPresentException.class)
            .ignoring(UnhandledAlertException.class) 
            .until(ExpectedConditions.alertIsPresent());

} catch (Exception e) {
}

最佳答案

编写您自己的 ExpectedConditions 类怎么样?

public abstract class MyExpectedConditions {
public static ExpectedCondition<Boolean> waitForAlert() {
    return new ExpectedCondition<Boolean>() {

        @Override
        public Boolean apply(WebDriver driver) {
            try {
                driver.switchTo().alert();
                driver.switchTo().defaultContent();
                return true;
            } catch (NoAlertPresentException e) {
                return false;
            }
        }
    };
}

}

用法:

WebDriverWait wait = new WebDriverWait(driver, 20);
wait.until(MyExpectedConditions.waitForAlert());

说明: WebDriverWait 导致交换机在 20 秒内发出警报。如果警报不存在,则抛出并捕获Exception。如果 driver 成功切换到 alert,它将返回到 defaultContent 并继续执行您的代码。

如果您想处理此警报,您必须自行切换到警报。

关于java - Selenium webdriver 显式等待警报抛出 UnhandledAlertException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42373356/

相关文章:

java - 我们如何单击具有相同类名和相同名称的按钮

block 内的 python 异常处理

C# 捕获任何退出的异常

java - java中的多线程无法传达变化

java - 在某些情况下,Web 元素上没有任何操作,只有在完全加载表单后才可用

css - Selenium:为什么 css 选择器在 IE10 中失败,但在 firefox 或 chrome 中却失败?

windows - 在 Windows XP 中将 Selenium Server standalone 2 作为服务运行

java - IOException 无法解析为类型错误

java - MOEA 框架 - 实现方法存在问题

JAVA_OPTS 未被识别