如何处理硒中的多个警报弹出确认?

问题描述:

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

所以,请帮我在这...

+0

你能分享多次弹出的弹出窗口吗?它是警报或模式对话框还是弹出式对话框? – DebanjanB

+0

这是面试问题之一,弹出窗口可能会接受第一次或任何。所以我们想尝试直到关闭弹出窗口。你能帮我解决这个问题吗? –

如果你知道的时候确切数目此警报会弹出,你可以使用一个简单的循环与重的硬编码数。例如:

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