如何处理硒中的多个警报弹出确认?
问题描述:
如何处理硒中的多个警报弹出确认。例如:如果接受弹出窗口,它会一次又一次询问同一个窗口。如果在点击第5次确认/解散后弹出窗口关闭,我们如何处理相同的问题。如何处理硒中的多个警报弹出确认?
所以,请帮我在这...
答
如果你知道的时候确切数目此警报会弹出,你可以使用一个简单的循环与重的硬编码数。例如:
int retries = 5;
while (retries > 0) {
alertTriggerButton.click();
Alert alert = driver.switchTo().alert();
alert.accept();
retries--;
}
你应该修改这个代码,以确保它根据自己的网页行为,认为像响应时间考虑作品(换句话说 - 如果需要增加相应的等待时间)。
答
你可以使用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();
}
}
你能分享多次弹出的弹出窗口吗?它是警报或模式对话框还是弹出式对话框? – DebanjanB
这是面试问题之一,弹出窗口可能会接受第一次或任何。所以我们想尝试直到关闭弹出窗口。你能帮我解决这个问题吗? –