it-swarm.com.de

Wie prüfe ich, ob eine Warnung mit WebDriver vorliegt?

Ich muss das Vorhandensein von Alert in WebDriver überprüfen.

Manchmal wird eine Warnung angezeigt, aber manchmal wird sie nicht angezeigt. Ich muss zuerst prüfen, ob der Alert existiert, dann kann ich ihn annehmen oder verwerfen oder er sagt: Es wurde kein Alert gefunden.

55
Yunfei Gu
public boolean isAlertPresent() 
{ 
    try 
    { 
        driver.switchTo().alert(); 
        return true; 
    }   // try 
    catch (NoAlertPresentException Ex) 
    { 
        return false; 
    }   // catch 
}   // isAlertPresent()

Überprüfen Sie den Link hier https://groups.google.com/forum/?fromgroups#!topic/webdriver/1GaSXFK76zY

76
ManMohan Vyas

Mit der folgenden (C # -Implementierung, aber in Java ähnlich) können Sie feststellen, ob eine Warnung ohne Ausnahmen und ohne das Erstellen des WebDriverWait-Objekts vorliegt.

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

Ich würde vorschlagen, ExpectedConditions und alertIsPresent () zu verwenden. ExpectedConditions ist eine Wrapper-Klasse, die nützliche Bedingungen implementiert, die in ExpectedCondition interface definiert sind.

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");
9
nilesh

Ich habe festgestellt, dass die Ausnahme von driver.switchTo().alert(); in Firefox (FF V20 & Selenium-Java-2.32.0) so langsam ist

Also wähle ich einen anderen Weg:

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

Dies ist ein besserer Weg, wenn bei den meisten Ihrer Testfälle KEIN Dialog vorhanden ist (eine Ausnahme ist teuer).

7
andyf

Ich würde vorschlagen, ExpectedConditions und alertIsPresent () zu verwenden. ExpectedConditions ist eine Wrapper-Klasse, die nützliche Bedingungen implementiert, die in ExpectedCondition interface definiert sind.

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

Hinweis: Dies basiert auf der Antwort von nilesh, ist jedoch dafür ausgelegt, die TimeoutException abzufangen, die von der Methode wait.until () ausgelöst wird.

5
Vince Bowdren

public boolean isAlertPresent () {

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

}

1
Vikas

Dieser Code prüft, ob die Warnung vorliegt oder nicht.

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");
    }
    }
1
Vishnu B S

ExpectedConditions ist veraltet, also:

        WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(15));
        wait.Until(SeleniumExtras.WaitHelpers.ExpectedConditions.AlertIsPresent());

C # Selen 'ExpectedConditions ist veraltet'

0
CarolCiola
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;
              }
          }
0
Naveen