it-swarm.com.de

Alarmbehandlung in Selenium WebDriver (Selenium 2) mit Java

Ich möchte feststellen, ob eine Warnung angezeigt wird oder nicht. Derzeit verwende ich den folgenden Code:

    try {
        Alert alert = webDriver.switchTo().alert();

        // check if alert exists
        // TODO find better way
        alert.getText();

        // alert handling
        log().info("Alert detected: {}" + alert.getText());
        alert.accept();
    } catch (Exception e) {
    }

Das Problem ist, dass, wenn es keine Benachrichtigung über den aktuellen Status der Webseite gibt, eine bestimmte Zeitspanne gewartet wird, bis das Zeitlimit erreicht ist. Dann wird eine Ausnahme ausgelöst und die Leistung ist daher wirklich schlecht.

Gibt es einen besseren Weg, vielleicht einen Alert-Event-Handler, den ich für dynamisch auftretende Alarme verwenden kann?

36
Alp

Dies hat bei mir mit Explicit Wait von hier funktioniert WebDriver: Advanced Usage

public void checkAlert() {
    try {
        WebDriverWait wait = new WebDriverWait(driver, 2);
        wait.until(ExpectedConditions.alertIsPresent());
        Alert alert = driver.switchTo().alert();
        alert.accept();
    } catch (Exception e) {
        //exception handling
    }
}
74
Leo

Schreibe die folgende Methode:

public boolean isAlertPresent() {
    try {
        driver.switchTo().alert();
        return true;
    } // try
    catch (Exception e) {
        return false;
    } // catch
}

Jetzt können Sie prüfen, ob ein Alarm vorliegt oder nicht, indem Sie die oben beschriebene Methode verwenden:

if (isAlertPresent()) {
    driver.switchTo().alert();
    driver.switchTo().alert().accept();
    driver.switchTo().defaultContent();
}
16
Ripon Al Wasim
 Alert alert = driver.switchTo (). Alert (); 

 Alert.accept (); 

Sie können das Benachrichtigungsfeld auch ablehnen:

 Alert Alert = driver.switchTo (). Alert (); 

 Alert ().
3
ER.swatantra
try 
    {
        //Handle the alert pop-up using seithTO alert statement
        Alert alert = driver.switchTo().alert();

        //Print alert is present
        System.out.println("Alert is present");

        //get the message which is present on pop-up
        String message = alert.getText();

        //print the pop-up message
        System.out.println(message);

        alert.sendKeys("");
        //Click on OK button on pop-up
        alert.accept();
    } 
    catch (NoAlertPresentException e) 
    {
        //if alert is not present print message
        System.out.println("alert is not present");
    }
2
user4562460

Du könntest es versuchen

 try{
        if(webDriver.switchTo().alert() != null){
           Alert alert = webDriver.switchTo().alert();
           alert.getText();
           //etc.
        }
    }catch(Exception e){}

Wenn dies nicht funktioniert, können Sie versuchen, alle Fenstergriffe zu durchlaufen und zu sehen, ob die Warnung vorhanden ist. Ich bin nicht sicher, ob der Alarm mit Selenium als neues Fenster geöffnet wird.

for(String s: webDriver.getWindowHandles()){
 //see if alert exists here.
}
0
Reid Mac