Saltar al contenido

Manejo de alertas de selenio y ventanas emergentes: ¿Cómo manejarlo?

En este tutorial, aprenderemos cómo manejar ventanas emergentes en Selenium y diferentes tipos de alertas disponibles en una aplicación web. Prueba. También veremos cómo manejar una Alerta en Selenium WebDriver y aprenderemos cómo aceptar y rechazar la alerta según los tipos de alertas.

En este tutorial, aprenderá:

¿Qué es una alerta en selenio?

Un Advertencia en selenio Es un pequeño cuadro de mensaje que aparece en la pantalla para darle al usuario alguna información o notificación. Notifica al usuario sobre información específica o error, solicita permiso para realizar ciertas tareas y también proporciona mensajes de advertencia.

Las variedades de selenio no están muy atentas:

1) Alerta simple

La clase muestra alertas simples en Selenium con alguna información o advertencias en la pantalla.

2) Alerta inmediata.

Este aviso de alerta solicita alguna entrada del usuario y un controlador web de Selenium puede ingresar el texto usando un remitente («entrada …»).

3) Alerta confirmada.

Esta alerta de confirmación solicita permiso para realizar algún tipo de operación.

Cómo manejar una alerta en Selenium WebDriver

Una interfaz de alerta proporciona los pocos métodos a continuación que se utilizan ampliamente en Webdriver de selenio.

1) despido nulo () // Para hacer clic en el botón ‘Cancelar’ la alerta.

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

2) aceptación nula () // Para hacer clic en el botón ‘Aceptar’ de la alerta.

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

3) cadena getText() // Para capturar el mensaje de alerta.

driver.switchTo().alert().getText();			

4) direcciones nulas (cadena ToSend) // Para enviar algunos datos al cuadro de alerta.

driver.switchTo().alert().sendKeys("Text");

Verá que algunos modos de alerta se muestran como se muestra en la captura de pantalla a continuación sugerida por Eclipse.

Podemos cambiar fácilmente a alerta desde la ventana principal usando Selenium .cambiar a () método.

Ahora automaticemos el escenario siguiente.

En este caso, utilizaremos el sitio de demostración de Guru99 para demostrar el manejo de las alertas de selenio.

Paso 1) Inicie el navegador web y abra el sitio »http://demo.guru99.com/test/delete_customer.php »

Paso 2) Ingrese cualquier ID de cliente.

Paso 3) Después de ingresar el ID de cliente, haga clic en el botón «Enviar».

Paso 4) Rechazar / aceptar la alerta.

Maneje una alerta en Selenium Webdriver usando el escenario anterior


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("http://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();		
    }	

}
		

Producción:

Cuando ejecuta el código anterior, inicia el sitio. Intente eliminar una identificación de cliente manejando una alerta de confirmación que se muestra en la pantalla, eliminando así la identificación de cliente de la aplicación.

Cómo manejar la ventana emergente de Selenium usando Webdriver

Para la automatización, cuando tenemos varias ventanas en una aplicación web, la actividad de control puede tener que cambiar entre varias ventanas de una ventana a otra para completar la operación. Después de completar la operación, debe volver a la ventana principal, es decir, la ventana madre en Selenium. Veremos esto más adelante en el artículo con un ejemplo.

Un controlador web de selenium contiene métodos mediante los cuales podemos manejar múltiples ventanas.

Driver.getWindowHandles ();

Para manejar todas las ventanas abiertas con un controlador web, podemos usar «Driver.getWindowHandles ()» y luego podemos cambiar una ventana de una ventana a otra en una aplicación web. Su tipo es Iterador devuelve .

Driver.getWindowHandle ();

Una vez que se abre el sitio, tenemos que manejar la ventana principal debajo de él. driver.getWindowHandle (). Esto manejará la ventana actual que la identifica de forma única en este caso de unidad. Su tipo de plegado es String.

Para el manejo de ventanas en selenio, seguiremos los pasos a continuación:

Ahora, automaticemos el escenario siguiente para aprender a manejar múltiples ventanas usando Selenium Webdriver.

En este caso, usaremos el sitio de demostración «Guru99» para indicar un identificador de ventana.

Paso 1) Dirección del sitio.

Inicie el navegador y abra el sitio » http://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 para niños.

Paso 3) Se abre la nueva ventana para niños.

Se abre una nueva ventana, pidiendo al usuario que ingrese una identificación de correo electrónico y envíe la página.

Paso 4) Ingrese su ID de correo electrónico e ingrese.

Paso 5) Muestre las credenciales de acceso en la página de envío.

Cuando ejecute el código, verá que la ventana secundaria está abierta en una nueva pestaña.

  1. Cierre la ventana de credenciales secundarias.
  1. Vaya a la ventana principal.

Maneje múltiples ventanas en una unidad web de selenio usando el escenario anterior.


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("http://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("This email address is being protected from spambots. You need JavaScript enabled to view it.");                			
                    
                    driver.findElement(By.name("btnLogin")).click();			
                                 
			// Closing the Child Window.
                        driver.close();		
            }		
        }		
        // Switching to Parent window i.e Main Window.
            driver.switchTo().window(MainWindow);				
    }
}		

Producción:

Cuando ejecuta el código anterior, inicia el sitio y cuando hace clic en el enlace «Haga clic aquí», abre una ventana secundaria en una nueva pestaña. Puede cerrar la ventana del niño y cambiar a la ventana del padre cuando se complete la operación. Por lo tanto, maneje más de una ventana en la aplicación.

Manejo de múltiples ventanas en selenio

Conclusión: