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().

  • 🔔 Definición básica: A Selenium La alerta es una JavaDiálogo de script que se muestra encima de la página y que debe procesarse antes de realizar cualquier otra acción.
  • 🗂️ Tres tipos de alerta: Las funciones Simple (información), Solicitud (entrada de texto) y Confirmación (Sí/No) requieren cada una llamadas diferentes a WebDriver.
  • 🛠️ API de alertas: Utilice driver.switchTo().alert() con accept(), dismiss(), getText() y sendKeys() para interactuar con el diálogo.
  • 🪟 Manejo de ventanas: getWindowHandle() devuelve el ID de la ventana actual; getWindowHandles() devuelve el conjunto completo para cambiar de ventana.
  • 🚀 Selenium Nota de 4: Selenium El administrador resuelve automáticamente los controladores, eliminando la necesidad de especificar rutas de chromedriver.exe de forma fija.
  • 🤖 Asistencia de IA: Los agentes de IA generan alertas y scripts de ventanas que tienen en cuenta la ubicación, lo que reduce la necesidad de preparación manual en los conjuntos de pruebas.

Cómo gestionar alertas y ventanas emergentes en Selenium

¿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.

Ejemplo sencillo de cuadro de diálogo de alerta en el navegador.

2) Prompt Alert

La alerta solicita información al usuario. Selenium WebDriver puede escribir en él usando sendKeys("input...").

Mostrar cuadro de diálogo de alerta con campo de entrada

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.

Cuadro de diálogo de alerta de confirmación con botones Aceptar y Cancelar.

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.

  1. anular despedir() — hace clic en el Cancelar .
driver.switchTo().alert().dismiss();
  1. aceptar nulo() — hace clic en el OK .
driver.switchTo().alert().accept();
  1. cadena obtenerTexto() — captura el mensaje de alerta.
driver.switchTo().alert().getText();
  1. 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.

Eclipse autocompletar mostrando métodos de manejo de alertas

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.

Eliminar página de demostración del cliente con campo ID de cliente

Paso 3) Haga clic en el botón Enviar Formulario .

Botón Enviar para activar la alerta de confirmación

Paso 4) Acepte o descarte la alerta de confirmación resultante.

Alerta de confirmación activada por acción de eliminación

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.

GuruPágina de inicio de demostración emergente 99

Paso 2) Haga clic en el botón Haga clic aquí Enlace. Se abre una nueva ventana secundaria.

Apertura de la ventana infantil desde el enlace Haga clic aquí

Paso 3) La ventana secundaria solicita al usuario que introduzca una dirección de correo electrónico y la envíe.

Formulario de entrada de correo electrónico para ventana secundaria

Paso 4) Introduce tu dirección de correo electrónico y envíala.

Envío de correo electrónico dentro de la ventana infantil

Paso 5) La página muestra las credenciales de acceso devueltas por la demostración.

Credenciales de acceso que se muestran en la ventana secundaria

Después de que se muestren las credenciales:

  1. Cierra la ventana del niño.

Cerrar la ventana secundaria en el navegador

  1. Vuelva a enfocar la ventana principal.

Volver 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.

Manejo de múltiples ventanas completado en Selenium

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. Alert Interfaz que utiliza un escenario de eliminación de cliente en funcionamiento.
  • Manejó múltiples ventanas del navegador capturando identificadores con getWindowHandle() y getWindowHandles() y alternando entre ellos.

Preguntas Frecuentes

Una alerta es nativa JavaDiálogo de script que suspende la página hasta que se procese. Una ventana emergente es una nueva ventana o pestaña del navegador. Las alertas usan switchTo().alert(); las ventanas emergentes usan switchTo().window() con el identificador devuelto por getWindowHandles().

Se lanza NoAlertPresentException cuando se ejecuta switchTo().alert() pero no se muestra ninguna alerta. Envuelva la llamada con WebDriverWait hasta que ExpectedConditions.alertIsPresent() sea verdadero para darle tiempo a la página a activar el cuadro de diálogo.

Las ventanas emergentes de autenticación básica no son estándar. JavaAlertas de script. Pasar credenciales en el URL (https://user:pass@site.com) o utilice Selenium 4 CDP Network.setExtraHTTPHeaders. Para ventanas emergentes de SSO, utilice BrowserStack o un controlador hasAuthentication registrado.

Asistentes de IA como AI Los copilotos de código generan manejadores de alertas que tienen en cuenta la ubicación, predicen las esperas necesarias y refactorizan XPath frágiles. También redactan aserciones para el texto de alerta y la ventana secundaria. URLs, acelerando Selenium creación de pruebas.

Sí. Las plataformas de prueba de autorreparación utilizan IA para detectar cambios en el DOM, intercambiar localizadores rotos y ajustar los tiempos de espera cuando cambian las alertas o las ventanas emergentes. Esto reduce el mantenimiento para Selenium suites que se ejecutan con interfaces de usuario que se actualizan con frecuencia.

Resumir este post con: