gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 03:00:55 26 4
gpt4 key购买 nike

我必须明确等待 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com