Cómo gestionar alertas y ventanas emergentes en Selenium?
⚡ Resumen inteligente
Alertas y ventanas emergentes en Selenium son JavaEste artículo explica cómo identificar diálogos y ventanas secundarias que bloquean el flujo de automatización, cómo identificar alertas simples, de aviso y de confirmación, cómo alternar entre ellas con WebDriver y cómo gestionar varias ventanas mediante getWindowHandles().

¿Qué es una alerta en Selenium?
An Alerta en Selenium es una pequeña JavaCuadro de diálogo de script que aparece en la pantalla para proporcionar al usuario información o notificaciones. Puede confirmar una acción específica, solicitar permiso para realizar una operación o mostrar un mensaje de advertencia.
En este tutorial, aprenderá cómo manejar ventanas emergentes en Selenium y los diferentes tipos de alertas que se encuentran en las aplicaciones web las pruebas También veremos cómo manejar una alerta en Selenium WebDriver y cómo aceptarlo o rechazarlo según el tipo de alerta.
Tipos de alertas en Selenium
JavaEl script expone tres cuadros de diálogo de alerta que Selenium debe manejarse de manera diferente.
1) Simple Alert
La alerta simple muestra información o una advertencia en la pantalla. El usuario solo puede confirmarla haciendo clic. OK.
2) Prompt Alert
La alerta solicita información al usuario. Selenium WebDriver puede escribir en él usando sendKeys("input...").
3) Confirmation Alert
La alerta de confirmación le pide al usuario que apruebe o cancele una operación. Expone ambas OK y Cancelar botones.
Cómo gestionar una alerta en Selenium Controlador web
El Alert interfaz en Selenium Controlador web Expone cuatro métodos que cubren todas las interacciones de alerta.
- anular despedir() — hace clic en el Cancelar .
driver.switchTo().alert().dismiss();
- aceptar nulo() — hace clic en el OK .
driver.switchTo().alert().accept();
- cadena obtenerTexto() — captura el mensaje de alerta.
driver.switchTo().alert().getText();
- void sendKeys (Cadena cadenaParaEnviar) — escribe texto en una alerta emergente.
driver.switchTo().alert().sendKeys("Text");
Eclipse autocompletar muestra los métodos de alerta disponibles después de typing alert. en la línea del editor. Cambie de la ventana principal a la alerta en cualquier momento usando Selenium, .cambiar a() método.
Ejemplo práctico: Eliminar la demostración del cliente
Vamos a automatizar el siguiente escenario. Usaremos el Guru99 sitios de demostración para ilustrar Selenium gestión de alertas.
Paso 1) Inicie el navegador y abra https://demo.guru99.com/test/delete_customer.php.
Paso 2) Ingrese cualquier ID de cliente.
Paso 3) Haga clic en el botón Enviar Formulario .
Paso 4) Acepte o descarte la alerta de confirmación resultante.
Selenium Java Code: Resolver Confirmation Alert
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 {
// Selenium 4 ships Selenium Manager, so an explicit driver path is no longer required.
WebDriver driver = new ChromeDriver();
// Open the Delete Customer demo page
driver.get("https://demo.guru99.com/test/delete_customer.php");
driver.findElement(By.name("cusid")).sendKeys("53920");
driver.findElement(By.name("submit")).submit();
// Switch to the confirmation alert
Alert alert = driver.switchTo().alert();
// Capture the alert message
String alertMessage = alert.getText();
System.out.println(alertMessage);
Thread.sleep(5000);
// Accept the alert
alert.accept();
driver.quit();
}
}
Salida: El navegador abre la página Eliminar cliente, introduce el ID del cliente, acepta la alerta de confirmación y elimina el registro de la aplicación de demostración.
Cómo gestionar las ventanas emergentes Windows in Selenium Controlador web
Cuando la automatización debe funcionar en varias ventanas del navegador, la prueba tiene que cambiar el foco entre ellas y volver a la ventana principal después de cada operación. Selenium WebDriver expone dos métodos que lo hacen posible.
controlador.obtenerMandosDeVentana()
Devuelve un Set<String> de cada identificador de ventana abierta. Itere sobre el conjunto para cambiar de la ventana principal a cualquier ventana secundaria en la aplicación.
controlador.getWindowHandle()
Devuelve un String Con el identificador único de la ventana actual. Captúralo antes de abrir cualquier ventana secundaria para poder volver a la ventana principal más tarde.
Siga estos pasos para demostrar el manejo de ventanas en comparación con el Guru99 demostraciones emergentes.
Ejemplo práctico: Cambio de ventana
Paso 1) Inicie el navegador y abra https://demo.guru99.com/popup.php.
Paso 2) Haga clic en el botón Haga clic aquí Enlace. Se abre una nueva ventana secundaria.
Paso 3) La ventana secundaria solicita al usuario que introduzca una dirección de correo electrónico y la envíe.
Paso 4) Introduce tu dirección de correo electrónico y envíala.
Paso 5) La página muestra las credenciales de acceso devueltas por la demostración.
Después de que se muestren las credenciales:
- Cierra la ventana del niño.
- Vuelva a enfocar la ventana principal.
Selenium Java Code: Manejar múltiples Windows
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 {
// Selenium 4 auto-resolves the browser driver via Selenium Manager
WebDriver driver = new FirefoxDriver();
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();
// Capture every open window handle
Set<String> allWindows = driver.getWindowHandles();
Iterator<String> iterator = allWindows.iterator();
while (iterator.hasNext()) {
String childWindow = iterator.next();
if (!mainWindow.equalsIgnoreCase(childWindow)) {
// Switch to the child window
driver.switchTo().window(childWindow);
driver.findElement(By.name("emailid")).sendKeys("gaurav.3n@gmail.com");
driver.findElement(By.name("btnLogin")).click();
// Close the child window
driver.close();
}
}
// Return focus to the main window
driver.switchTo().window(mainWindow);
driver.quit();
}
}
Salida: El sitio se lanza, el Haga clic aquí El enlace abre una pestaña secundaria. Selenium Introduce el correo electrónico y lo envía, cierra la ventana secundaria y regresa a la ventana principal.
Conclusión
- Definió los tres Selenium Tipos de alertas: simples, de aviso y de confirmación, con una captura de pantalla para cada una.
- Demostración del manejo de alertas con WebDriver.
AlertInterfaz que utiliza un escenario de eliminación de cliente en funcionamiento. - Manejó múltiples ventanas del navegador capturando identificadores con
getWindowHandle()ygetWindowHandles()y alternando entre ellos.















