with tables guru99 example selenium webdriver alert

selenium - tables - ¿Cómo verificar si existe una alerta usando WebDriver?



selenium web table example (9)

Necesito verificar la existencia de Alert en WebDriver.

A veces aparece una alerta, pero a veces no aparece. Necesito verificar si la alerta existe primero, luego puedo aceptarla o rechazarla o me dirá: no se encontró ninguna alerta.


Encontré atrapar excepción de driver.switchTo().alert(); es muy lento en Firefox (FF V20 y selenium-java-2.32.0).

Entonces elijo otra forma:

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

Y es una mejor manera cuando la mayoría de sus casos de prueba NO contienen ningún diálogo (arrojar excepciones es costoso).


Este código verificará si la alerta está presente o no.

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


La siguiente (implementación de C #, pero similar en Java) le permite determinar si hay una alerta sin excepciones y sin crear el objeto WebDriverWait .

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


Sugeriría utilizar ExpectedConditions y alertIsPresent() . ExpectedConditions es una clase contenedora que implementa condiciones útiles definidas en la interfaz 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");


Sugeriría utilizar ExpectedConditions y alertIsPresent() . ExpectedConditions es una clase contenedora que implementa condiciones útiles definidas en la interfaz 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; }

Nota: esto se basa en la respuesta de nilesh, pero está adaptado para capturar la excepción TimeoutException arrojada por el método wait.until ().


public boolean isAlertPresent () {

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

}


ExpectedConditions está obsoleto, entonces:

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

C # Selenium ''ExpectedConditions is obsolete''



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