guru99 java popup selenium-webdriver alert

guru99 - Manejo de alertas en Selenium WebDriver(selenio 2) con Java



selenium webdriver firefox (5)

Quiero detectar si una alerta aparece o no. Actualmente estoy usando el siguiente código:

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) { }

El problema es que si no hay una alerta sobre el estado actual de la página web, espera una cantidad específica de tiempo hasta que se alcanza el tiempo de espera, luego lanza una excepción y, por lo tanto, el rendimiento es realmente malo.

¿Hay una mejor manera, tal vez un controlador de eventos de alerta que puedo usar para alertas de ocurrencia dinámica?


Escribe el siguiente método:

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

Ahora, puede verificar si la alerta está presente o no usando el método escrito anteriormente como se muestra a continuación:

if (isAlertPresent()) { driver.switchTo().alert(); driver.switchTo().alert().accept(); driver.switchTo().defaultContent(); }


Esto es lo que funcionó para mí usando espera explícita desde aquí WebDriver: uso avanzado

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


Tu podrías intentar

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

Si eso no funciona, podría intentar recorrer todos los identificadores de ventana y ver si existe la alerta. No estoy seguro de si la alerta se abre como una nueva ventana con selenio.

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


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

También puede rechazar el cuadro de alerta:

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


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