如何在selenium中处理多个警报弹出确认。 例如:如果接受弹出窗口,它会一次又一次地询问同一个窗口。如果在点击第5次确认/解雇后该弹出窗口关闭,我们如何处理相同的问题。
所以请帮助我...
答案 0 :(得分:1)
如果您知道弹出此警报的确切次数,则可以使用带有硬编码重试次数的简单循环。例如:
int retries = 5;
while (retries > 0) {
alertTriggerButton.click();
Alert alert = driver.switchTo().alert();
alert.accept();
retries--;
}
您应修改此代码,以确保其符合您的网页行为,因此请考虑响应时间(换句话说 - 如果需要,请添加相关的等待时间)。
答案 1 :(得分:0)
你可以使用while。您正在检查是否存在警报,并且每次警报都存在时,您将根据您提供的布尔值来解决警报。当没有新警报时,它将会中断并继续。
public static void resolveAllAlerts(WebDriver driver, int timeout, boolean accept) {
while (isAlertPresent(driver, timeout)) {
resolveAlert(driver, accept);
}
}
private static boolean isAlertPresent(WebDriver driver, int timeout) {
try {
Alert a = new WebDriverWait(driver, timeout).until(ExpectedConditions.alertIsPresent());
if (a != null) {
return true;
} else {
throw new TimeoutException();
}
} catch (TimeoutException e) {
// log the exception;
return false;
}
}
private static void resolveAlert(WebDriver driver, boolean accept) {
if (accept) {
driver.switchTo().alert().accept();
} else {
driver.switchTo().alert().dismiss();
}
}