Подтвердить что ты не робот

Как проверить, существует ли предупреждение с помощью WebDriver?

Мне нужно проверить наличие Alert в WebDriver.

Иногда появляется всплывающее предупреждение, но иногда оно не появляется. Мне нужно проверить, существует ли предупреждение, но я могу принять или отклонить его или он скажет: оповещения не найдены.

4b9b3361

Ответ 2

Следующая (реализация С#, но похожая на Java) позволяет определить, существует ли предупреждение без исключений и без создания объекта WebDriverWait.

boolean isDialogPresent(WebDriver driver) {
    IAlert alert = ExpectedConditions.AlertIsPresent().Invoke(driver);
    return (alert != null);
}

Ответ 3

Я бы предложил использовать ExpectedConditions и alertIsPresent(). ExpectedConditions - это класс-оболочка, реализующий полезные условия, определенные в интерфейсе ExpectedCondition.

WebDriverWait wait = new WebDriverWait(driver, 300 /*timeout in seconds*/);
if(wait.until(ExpectedConditions.alertIsPresent())==null)
    System.out.println("alert was not present");
else
    System.out.println("alert was present");

Ответ 4

Я обнаружил, что исключение catching driver.switchTo().alert(); настолько медленное в Firefox (FF V20 и selenium-java-2.32.0).

Итак, я выбираю другой способ:

    private static boolean isDialogPresent(WebDriver driver) {
        try {
            driver.getTitle();
            return false;
        } catch (UnhandledAlertException e) {
            // Modal dialog showed
            return true;
        }
    }

И это лучший способ, когда в большинстве ваших тестовых случаев нет диалогового окна NO (исключение броска дороговато).

Ответ 5

Я бы предложил использовать ExpectedConditions и alertIsPresent(). ExpectedConditions - это класс-оболочка, реализующий полезные условия, определенные в интерфейсе ExpectedCondition.

public boolean isAlertPresent(){
    boolean foundAlert = false;
    WebDriverWait wait = new WebDriverWait(driver, 0 /*timeout in seconds*/);
    try {
        wait.until(ExpectedConditions.alertIsPresent());
        foundAlert = true;
    } catch (TimeoutException eTO) {
        foundAlert = false;
    }
    return foundAlert;
}

Примечание: это основано на ответе nilesh, но адаптировано для перехвата исключения TimeoutException, которое выдается методом wait.until().

Ответ 6

Этот код проверяет, присутствует ли оповещение или нет.

public static void isAlertPresent(){
    try{
    Alert alert = driver.switchTo().alert();
    System.out.println(alert.getText()+" Alert is Displayed"); 
    }
    catch(NoAlertPresentException ex){
    System.out.println("Alert is NOT Displayed");
    }
    }

Ответ 7

public boolean isAlertPresent() {

try 
{ 
    driver.switchTo().alert(); 
    system.out.println(" Alert Present");
}  
catch (NoAlertPresentException e) 
{ 
    system.out.println("No Alert Present");
}    

}

Ответ 8

public static void handleAlert(){
    if(isAlertPresent()){
        Alert alert = driver.switchTo().alert();
        System.out.println(alert.getText());
        alert.accept();
    }
}
public static boolean isAlertPresent(){
      try{
          driver.switchTo().alert();
          return true;
      }catch(NoAlertPresentException ex){
          return false;
      }
}