Selenium Manejo de alertas y ventanas emergentes: ¿Cómo manejarlas?
¿Qué es la alerta en Selenium?
An Alerta en Selenium es un pequeño cuadro de mensaje que aparece en la pantalla para brindarle al usuario información o notificación. Notifica al usuario información específica o error, solicita permiso para realizar ciertas tareas y también proporciona mensajes de advertencia.
En este tutorial, aprenderemos cómo manejar las ventanas emergentes en Selenium y diferentes tipos de alertas que se encuentran en la aplicación web Pruebas . También veremos cómo manejar Alert en Selenium WebDriver y aprenda cómo aceptamos y rechazamos la alerta según los tipos de alerta.
Tipos de alertas en Selenium
1) Simple Alert
La clase de alerta simple en Selenium muestra alguna información o advertencia en la pantalla.
2) Prompt Alert
Este Prompt Alert solicita alguna información del usuario y Selenium webdriver puede ingresar el texto usando sendkeys ("entrada...").
3) Confirmation Alert
Esta alerta de confirmación solicita permiso para realizar algún tipo de operación.
Cómo manejar la alerta en Selenium Controlador web
La interfaz de alerta proporciona los siguientes métodos que se utilizan ampliamente en Selenium controlador web.
1) anular despedir() // Para hacer clic en el botón 'Cancelar' de la alerta.
driver.switchTo().alert().dismiss();
2) aceptar nulo()// Para hacer clic en el botón 'Aceptar' de la alerta.
driver.switchTo().alert().accept();
3) cadena obtenerTexto() // Para capturar el mensaje de alerta.
driver.switchTo().alert().getText();
4) void sendKeys (Cadena cadenaParaEnviar) // Para enviar algunos datos al cuadro de alerta.
driver.switchTo().alert().sendKeys("Text");
Puede ver que se muestran varios métodos de alerta como se muestra en la siguiente pantalla sugerida por Eclipse.
Podemos cambiar fácilmente a alerta desde la ventana principal usando Selenium, .cambiar a() método.
Ahora automatizamos el escenario que se muestra a continuación.
En este escenario, usaremos el sitio de demostración Guru99 para ilustrar Selenium Manejo de alertas.
Paso 1) Inicie el navegador web y abra el sitio. https://demo.guru99.com/test/delete_customer.php
Paso 2) Ingrese cualquier identificación de cliente.
Paso 3) Después de ingresar la identificación del cliente, haga clic en el botón "Enviar".
Paso 4) Rechazar/aceptar la alerta.
Manejo de alerta en Selenium controlador web
import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.chrome.ChromeDriver; import org.openqa.selenium.NoAlertPresentException; import org.openqa.selenium.Alert; public class AlertDemo { public static void main(String[] args) throws NoAlertPresentException,InterruptedException { System.setProperty("webdriver.chrome.driver","G:\\chromedriver.exe"); WebDriver driver = new ChromeDriver(); // Alert Message handling driver.get("https://demo.guru99.com/test/delete_customer.php"); driver.findElement(By.name("cusid")).sendKeys("53920"); driver.findElement(By.name("submit")).submit(); // Switching to Alert Alert alert = driver.switchTo().alert(); // Capturing alert message. String alertMessage= driver.switchTo().alert().getText(); // Displaying alert message System.out.println(alertMessage); Thread.sleep(5000); // Accepting alert alert.accept(); } }
Salida:
Cuando se ejecuta el código anterior, se inicia el sitio. Intente eliminar el ID del cliente mediante la alerta de confirmación que se muestra en la pantalla y, de ese modo, elimine el ID del cliente de la aplicación.
Cómo manejar la ventana emergente usando Selenium controlador web
En la automatización, cuando tenemos varias ventanas en cualquier aplicación web, la actividad puede necesitar cambiar el control entre varias ventanas de una a otra para completar la operación. Una vez completada la operación, debe regresar a la ventana principal, es decir, la ventana principal en Selenium. Veremos esto más adelante en el artículo con un ejemplo.
In Selenium Controlador web: existen métodos a través de los cuales podemos manejar múltiples ventanas.
Controlador.getWindowHandles();
Para manejar todas las ventanas abiertas por el controlador web, podemos usar “Driver.getWindowHandles()” y luego podemos cambiar de una ventana a otra en una aplicación web. Su tipo de retorno es Iterador .
Controlador.getWindowHandle();
Cuando se abre el sitio, debemos manejar la ventana principal controlador.getWindowHandle(). Esto manejará la ventana actual que la identifica de forma única dentro de esta instancia del controlador. Su tipo de retorno es String.
Para manejo de ventanas en Selenium, seguiremos los siguientes pasos:
Ahora, automatizaremos el siguiente escenario para ver cómo manejar múltiples ventanas usando Selenium Controlador web.
En este escenario, utilizaremos el sitio de demostración “Guru99” para ilustrar el manejo de ventanas.
Paso 1) Inicie el sitio.
Inicie el navegador y abra el sitio. https://demo.guru99.com/popup.php
Paso 2) Haga clic en el enlace “Haga clic aquí”.
Cuando el usuario hace clic en el enlace "Haga clic aquí", se abre una nueva ventana secundaria.
Paso 3) Se abre una nueva ventana secundaria.
Se abre una nueva ventana, se le pide al usuario que ingrese su identificación de correo electrónico y envíe la página.
Paso 4) Ingrese su ID de correo electrónico y envíelo.
Paso 5) Muestre las credenciales de acceso al enviar la página.
Cuando ejecute el código, verá que la ventana secundaria está abierta en una nueva pestaña.
- Cierre la ventana Niño en la que se muestran las credenciales.
- Cambie a la ventana principal.
Cómo manejar múltiples Windows in Selenium
import java.util.Iterator; import java.util.Set; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.firefox.FirefoxDriver; public class WindowHandle_Demo { public static void main(String[] args) throws InterruptedException { WebDriver driver=new FirefoxDriver(); //Launching the site. driver.get("https://demo.guru99.com/popup.php"); driver.manage().window().maximize(); driver.findElement(By.xpath("//*[contains(@href,'popup.php')]")).click(); String MainWindow=driver.getWindowHandle(); // To handle all new opened window. Set<String> s1=driver.getWindowHandles(); Iterator<String> i1=s1.iterator(); while(i1.hasNext()) { String ChildWindow=i1.next(); if(!MainWindow.equalsIgnoreCase(ChildWindow)) { // Switching to Child window driver.switchTo().window(ChildWindow); driver.findElement(By.name("emailid")) .sendKeys("gaurav.3n@gmail.com"); driver.findElement(By.name("btnLogin")).click(); // Closing the Child Window. driver.close(); } } // Switching to Parent window i.e Main Window. driver.switchTo().window(MainWindow); } }
Salida:
Cuando ejecuta el código anterior, inicia el sitio y al hacer clic en el enlace "Haga clic aquí", se abre una ventana secundaria en una nueva pestaña. Puede cerrar la ventana secundaria y cambiar a la ventana principal una vez que la operación esté completamente realizada. Por lo tanto, maneja más de una ventana en la aplicación.
Conclusión
- Definimos los tipos de alerta y los mostramos con una captura de pantalla.
- Manejo demostrado de la alerta con Selenium WebDriver usando un escenario particular.
- Manejó múltiples ventanas con Selenium WebDriver usando un escenario particular.