如何在selenium中处理多个警报弹出确认?

时间:2017-12-18 02:02:03

标签: java selenium

如何在selenium中处理多个警报弹出确认。 例如:如果接受弹出窗口,它会一次又一次地询问同一个窗口。如果在点击第5次确认/解雇后该弹出窗口关闭,我们如何处理相同的问题。

所以请帮助我...

2 个答案:

答案 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();
    }
}