Manejo de alertas y popup con Selenium Webdriver

Manejo de Alertas de Javascript / PopUps:

En esta publicación, vemos cómo manejar las alertas de JavaScript / popups. Las alertas son básicamente recuadros emergentes que alejan su enfoque del navegador actual y lo obligan a leer el mensaje de alerta. Debe realizar alguna acción, como aceptar o cerrar el cuadro de alerta para reanudar su tarea en el navegador.

Para manejar las alertas emergentes, debemos cambiar a la ventana de alerta y llamar a los métodos de Selenium WebDriver Alert API.

 

Hay dos tipos de alertas.

  1. Basado en Windows
  2. Basado en la web

Aquí en esta publicación, me limito a Alertas de Javascript o basado en la web.

Para manejar Alertas basadas en el navegador (ventanas emergentes de alerta basadas en la Web), usamos la Interface Alert. La Interface Alert proporciona algunos métodos para manejar las ventanas emergentes.

Al ejecutar la secuencia de comandos de WebDriver, el control del controlador estará en el navegador incluso después de la alerta generada, lo que significa que el control del controlador estará detrás de la alerta emergente. Para cambiar el control a la ventana emergente de alerta, usamos el siguiente comando:

driver.switchTo().alert();

Una vez que cambiemos el control del navegador a la ventana de alerta. Podemos usar los métodos de la Interface de Alert para realizar las acciones requeridas, como aceptar la alerta, descartar la alerta, obtener el texto de la ventana de alerta, escribir algún texto en la ventana de alerta, etc.

Veamos los métodos de la Interface de Alert. Necesitamos Importar el siguiente paquete org.openqa.selenium.Alert para manejar las alertas en Selenium.

Obtener un control de la alerta abierta:

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

Hacer clic en el botón Aceptar:

alert.accept();

Hacer clic en el botón Cancelar:

alert.dismiss()

Obtener el texto que está presente en la Alerta:

alert.getText();

Ingresar texto en el cuadro de alerta

alert.sendkeys(String stringToSend);

Autenticar pasando las credenciales:

alert.authenticateUsing(Credentials credentials)

Ejemplo manejo de alerta con Selenium WebDriver

import org.openqa.selenium.Alert;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.testng.annotations.Test;

public class AlertInterface {

    @Test
    public void alertWindow() throws Exception{
        System.setProperty("webdriver.chrome.driver", "D:\\Selenium Environment\\Drivers\\chromedriver.exe");
        WebDriver driver = new ChromeDriver();
        driver.get("http://softwaretestingplace.blogspot.com/2017/03/javascript-alert-test-page.html");
        driver.findElement(By.xpath("//*[@id='content']/button")).click();
        Thread.sleep(3000);
        Alert alert = driver.switchTo().alert();
        String print = alert.getText();
        System.out.println(print);
        alert.accept();
        Thread.sleep(3000);
        driver.findElement(By.xpath("//*[@id='content']/button")).click();
        Thread.sleep(3000);
        alert.dismiss();
        driver.close();
    }
}

Te recomiendo visitar nuestro tutorial de selenium webdriver en español en el siguiente enlace

Compartir artículo

2 Comments

  1. anderson

    Responder

    Me gustaria que me ayudaran ya que en una prueba que estoy haciendo de repente se abre una ventana emergente y el webDriver no puede encontrar los webElements pero la ventana abre al hacer click en cierto parte de la prueba y en ocasiones es en otra parte de la prueba.
    estoy usando el codigo
    String parent = driver.getWindowHandle();
    Set s2 = driver.getWindowHandles();
    Iterator I2 = s2.iterator();
    if(I2.hasNext()) {
    while(I2.hasNext())
    {
    String child_window = I2.next();
    if(!parent.equals(child_window)){
    driver.switchTo().window(child_window);
    driver.close();
    }
    }
    driver.switchTo().window(parent);
    driver.switchTo().defaultContent();
    }

    pero salta el elmento que necesito clickear y la prueba genera error

    • julianlujan1

      Responder

      Hola Anderson, te pregunto, la ventana emergente solo se abre cuando haces clic la primera vez?
      Me podrías mandar la ventana emergente que se abre por favor.

Leave Comment

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.