Comment vérifier si une alerte existe à l’aide de WebDriver?

Je dois vérifier l’existence d’alerte dans WebDriver.

Parfois, il émet une alerte, mais parfois il ne s’affiche pas. Je dois vérifier si l’alerte existe en premier, puis je peux l’accepter ou la rejeter ou elle dira: aucune alerte trouvée.

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

Consultez le lien ici https://groups.google.com/forum/?fromgroups#!topic/webdriver/1GaSXFK76zY

Les éléments suivants (implémentation C #, mais similaire en Java) vous permettent de déterminer s’il existe une alerte sans exceptions et sans créer l’object WebDriverWait .

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

Je suggère d’utiliser ExpectedConditions et alertIsPresent () . ExpectedConditions est une classe wrapper qui implémente des conditions utiles définies dans l’interface 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"); 

J’ai trouvé exception à la capture de driver.switchTo().alert(); est si lent dans Firefox (FF V20 & sélenium-java-2.32.0) .`

Alors je choisis une autre façon:

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

Et c’est un meilleur moyen lorsque la plupart de vos cas de test ne sont PAS présents dans un dialog (l’exception de lancement est coûteuse).

Je suggère d’utiliser ExpectedConditions et alertIsPresent () . ExpectedConditions est une classe wrapper qui implémente des conditions utiles définies dans l’interface 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; } 

Note: ceci est basé sur la réponse par nilesh, mais adapté pour intercepter le TimeoutException qui est lancé par la méthode wait.until ().

booléen public isAlertPresent () {

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

}

Ce code vérifiera si l’alerte est présente ou non.

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

ExpectedConditions est obsolète, alors:

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

C # Selenium ‘ExpectedConditions est obsolète’