how handle alerts popups selenium webdriver selenium tutorial 16
Maneras eficientes de manejar Windows y alertas / ventanas emergentes basadas en la web en Selenium WebDriver:
descarga de música mp3 aplicación superior gratuita
En el tutorial anterior, enfocamos nuestra discusión en diferentes tipos de esperas proporcionados por WebDriver . También discutimos sobre varios tipos de opciones de navegación disponibles en WebDriver.
Avanzando en el Tutoriales de Selenium WebDriver , discutiremos sobre diferentes tipos de alertas disponibles mientras se prueban aplicaciones web y sus estrategias de manejo.
Hay dos tipos de alertas en las que nos centramos principalmente :
- Ventanas emergentes de alerta basadas en Windows
- Ventanas emergentes de alerta basadas en la web
Como sabemos que el manejo de ventanas emergentes basadas en ventanas está más allá de las capacidades de WebDriver, por lo tanto, utilizaríamos algunas utilidades de terceros para manejar ventanas emergentes.
El manejo de ventanas emergentes es uno de los trabajos más desafiantes de automatizar mientras se prueban aplicaciones web. Debido a la diversidad de tipos de ventanas emergentes, la situación se complica aún más.
¿Qué es el cuadro de alerta / cuadro emergente / cuadro de confirmación / mensaje / cuadro de autenticación?
No es más que un pequeño recuadro que aparece en la pantalla de visualización para darte algún tipo de información o para advertirte sobre una operación potencialmente dañina o incluso puede pedirte los permisos para la operación.
Ejemplo: Consideremos un ejemplo de la vida real para una mejor comprensión; Supongamos que cargamos una fotografía en cualquiera de estos populares sitios de redes sociales. Más adelante, deseo eliminar la fotografía cargada. Entonces, para eliminar, hice clic en el botón Eliminar. Tan pronto como hago clic en el botón Eliminar, el sistema me advierte de mi acción y me pregunta: ¿Realmente desea eliminar el archivo? Así que ahora tenemos la opción de aceptar esta alerta o rechazarla.
Así que antes de la sesión, veamos cómo rechazamos o aceptamos las alertas en función de sus tipos. Comenzando con las ventanas emergentes basadas en la web.
Lo que vas a aprender:
Ventanas emergentes basadas en web
Veamos cómo los manejamos usando WebDriver.
Manejo del cuadro emergente basado en web
WebDriver ofrece a los usuarios una forma muy eficiente de manejar estas ventanas emergentes utilizando la interfaz de alerta.
Hay cuatro métodos que usaríamos junto con la interfaz de alerta.
1) anular despedir () - El método de descarte () hace clic en el botón 'Cancelar' tan pronto como aparece la ventana emergente.
2) anular aceptar () - El método accept () hace clic en el botón 'Aceptar' tan pronto como aparece la ventana emergente.
3) String getText () - El método getText () devuelve el texto que se muestra en el cuadro de alerta.
4) vacío sendKeys (String stringToSend) - El método sendKeys () ingresa el patrón de cadena especificado en el cuadro de alerta.
Avancemos y observemos la implementación real.
Explicación de la aplicación bajo prueba
Hemos diseñado una página web de manera que incluya algunos tipos fundamentales de elementos web. Esta es la misma aplicación que presentamos al hablar sobre Seleccionar clase anteriormente en esta serie.
- Hipervínculo : Se han proporcionado los dos hipervínculos, a saber, 'Google' y 'abodeQA', que redirigen al usuario a 'http://www.google.com/' y 'http://www.abodeqa.com/' respectivamente en el haga clic en evento.
- Desplegable : Los tres hipervínculos se han creado para seleccionar colores, frutas y animales con un valor establecido por defecto.
- Botón : Se ha creado un botón 'probar' para mostrar el cuadro emergente con los botones Aceptar y Cancelar al hacer clic en el evento.
(Haga clic en la imagen para verla ampliada)
El siguiente es el código HTML utilizado para crear la página web mencionada anteriormente:
Prueba de clase selectaRojo Verde Amarillo Gris | Manzana Naranja Mango Lima | Seleccionar perro elefante ratón |
Haga clic en el botón para mostrar un cuadro de confirmación. Pruébelo function myFunction () {confirm ('¡Presione un botón!'); } |
Escenario a automatizar
- Inicie el navegador web y abra la página web
- Haga clic en el botón 'Pruébelo'
- Acepta la alerta
- Haga clic en el botón 'Pruébelo' nuevamente
- Rechaza la alerta
Código de WebDriver usando Seleccionar clase
Tenga en cuenta que para la creación de secuencias de comandos, estaríamos usando el proyecto 'Learning_Selenium' creado en el tutorial anterior.
Paso 1 : Cree una nueva clase de Java llamada 'DemoWebAlert' en el proyecto 'Learning_Selenium'.
Paso 2 : Copie y pegue el siguiente código en la clase 'DemoWebAlert.java'.
A continuación se muestra el script de prueba que es equivalente al escenario mencionado anteriormente.
|_+_| Recorrido del código
Declaraciones de importación
Importar org.openqa.selenium.Alert - Importar este paquete antes de la creación del script. El paquete hace referencia a la clase Alert que es necesaria para manejar las alertas basadas en web en WebDriver.
Creación de objetos para la clase de alerta
Alerta de alerta = driver.switchTo (). Alert ();
Creamos una variable de referencia para la clase Alert y la referenciamos a la alerta.
qué hacer con el archivo torrent
Cambiar a alerta
Driver.switchTo (). Alert ();
El comando anterior se utiliza para cambiar el control a la ventana emergente generada recientemente.
Acepta la alerta
alert.accept ();
El comando anterior acepta la alerta haciendo clic en el botón Aceptar.
Rechazar la alerta
alert.dismiss ();
El comando anterior cierra la alerta haciendo clic en el botón Cancelar y, por lo tanto, la operación no debería continuar.
Pop-Ups basados en ventanas
A veces, mientras automatizamos, obtenemos algunos escenarios, donde necesitamos manejar ventanas emergentes generadas por ventanas como una ventana emergente de impresión o una ventana de navegación mientras cargamos un archivo.
Leer también = >> Cómo manejar la carga de archivos en Selenium
El manejo de estas ventanas emergentes siempre ha sido un poco complicado, ya que sabemos que Selenium es una herramienta de prueba de automatización que solo admite pruebas de aplicaciones web, es decir, no admite aplicaciones basadas en Windows y la alerta de ventana es una de ellas. Sin embargo, el selenio por sí solo no puede ayudar con la situación, pero junto con la intervención de un tercero, este problema se puede superar.
Hay varias herramientas de terceros disponibles para manejar ventanas emergentes basadas en ventanas junto con el selenio.
preguntas de la entrevista core java para principiantes
Así que ahora manejemos una ventana emergente basada en la clase Robot.
La clase Robot es una utilidad basada en Java que emula las acciones del teclado y el mouse.
Antes de seguir adelante, tomemos un momento para echar un vistazo a la aplicación bajo prueba (AUT).
Explicación de la aplicación bajo prueba
Como aplicación en prueba, estaríamos usando 'gmail.com'. Creo que la aplicación no requiere más presentaciones.
Escenario a automatizar
- Inicie el navegador web y abra la aplicación - 'gmail.com'
- Ingrese un nombre de usuario y contraseña válidos
- Haga clic en el botón de inicio de sesión
- Haga clic en el botón redactar
- Haga clic en el icono de adjuntar
- Seleccione los archivos que se cargarán con la ventana emergente.
Código WebDriver usando la clase Robot
Tenga en cuenta que para la creación de secuencias de comandos, estaríamos usando el proyecto 'Learning_Selenium' creado en el tutorial anterior.
Paso 1 : Cree una nueva clase java llamada 'DemoWindowAlert' en el proyecto 'Learning_Selenium'.
Paso 2 : Copie y pegue el siguiente código en la clase 'DemoWindowAlert.java'.
A continuación se muestra el script de prueba que es equivalente al escenario mencionado anteriormente.
import org.junit.After; import org.junit.Before; import org.junit.Test; import org.openqa.selenium.Alert; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.firefox.FirefoxDriver; /** * class description */ public class DemoWebAlert { WebDriver driver; /** * Constructor */ public DemoWebAlert() { } /** * Set up browser settings and open the application */ @Before public void setUp() { driver=new FirefoxDriver(); // Opened the application driver.get('file:///F:/Work/Selenium/Testing-Presentation/DemoWebPopup.htm'); driver.manage().window().maximize(); } /** * Test to check Select functionality * @throws InterruptedException */ @Test public void testWebAlert() throws InterruptedException { // clicking on try it button driver.findElement(By.xpath('//button[contains(text(),'Try it')]')).click(); Thread.sleep(5000); // accepting javascript alert Alert alert = driver.switchTo().alert(); alert.accept(); // clicking on try it button driver.findElement(By.xpath('//button[contains(text(),'Try it')]')).click(); Thread.sleep(5000); // accepting javascript alert driver.switchTo().alert().dismiss(); // clicking on try it button driver.findElement(By.xpath('//button[contains(text(),'Try it')]')).click(); Thread.sleep(5000); // accepting javascript alert System.out.println(driver.switchTo().alert().getText()); driver.switchTo().alert().accept(); } /** * Tear down the setup after test completes */ @After public void tearDown() { driver.quit(); } }
import java.awt.event.KeyEvent; import org.junit.After; import org.junit.Before; import org.junit.Test; import org.openqa.selenium.By; importar org.openqa.selenium.WebDriver; importar org.openqa.selenium.firefox.FirefoxDriver; clase pública DemoWindowAlert {controlador WebDriver; @Before public void setUp () {driver = new FirefoxDriver (); driver.get ('https://gmail.com'); driver.manage (). window (). maximizar (); } @Test public void testWindowAlert () throws Exception {// ingrese una dirección de correo electrónico válida driver.findElement (By.id ('Correo electrónico')). SendKeys ('TestSelenium1607@gmail.com '); // ingrese una contraseña válida driver.findElement (By.id ('Passwd')). sendKeys ('TestSelenium'); // haga clic en el botón de inicio de sesión driver.findElement (By.id ('signIn')). click (); Thread.sleep (30000); // haga clic en el botón redactar driver.findElement (By.xpath ('// div [@ class =' z0 '] // div [contiene (texto (),' COMPOSE ')]')). click (); // haga clic en el icono adjuntar archivos driver.findElement (By.xpath ('// div [contiene (@ comando,' Archivos ')] // div [contiene (@ clase,' aaA ')]')). haga clic en ( ); // creando una instancia de la clase Robot (una utilidad basada en Java) Robot rb = new Robot (); // presionando teclas con la ayuda de los eventos keyPress y keyRelease rb.keyPress (KeyEvent.VK_D); rb.keyRelease (KeyEvent.VK_D); Thread.sleep (2000); rb.keyPress (KeyEvent.VK_SHIFT); rb.keyPress (KeyEvent.VK_SEMICOLON); rb.keyRelease (KeyEvent.VK_SEMICOLON); rb.keyRelease (KeyEvent.VK_SHIFT); rb.keyPress (KeyEvent.VK_BACK_SLASH); rb.keyRelease (KeyEvent.VK_BACK_SLASH); Thread.sleep (2000); rb.keyPress (KeyEvent.VK_P); rb.keyRelease (KeyEvent.VK_P); rb.keyPress (KeyEvent.VK_I); rb.keyRelease (KeyEvent.VK_I); rb.keyPress (KeyEvent.VK_C); rb.keyRelease (KeyEvent.VK_C); Thread.sleep (2000); rb.keyPress (KeyEvent.VK_ENTER); rb.keyRelease (KeyEvent.VK_ENTER); Thread.sleep (2000); } @Después de public void tearDown () {driver.quit (); }} Recorrido del código
Declaraciones de importación
importar java.awt.Robot - Importe este paquete antes de la creación del script. El paquete hace referencia a la clase Robot en Java, que es necesaria para simular eventos de teclado y mouse.
importar java.awt.event.KeyEvent - El paquete permite al usuario utilizar los eventos keyPress y keyRelease de un teclado.
Creación de objetos para la clase Robot
Robot rb = nuevo Robot ();
Creamos una variable de referencia para la clase Robot y la instanciamos.
Eventos KeyPress y KeyRelease
rb.keyPress (KeyEvent.VK_D);
rb.keyRelease (KeyEvent.VK_D);
Los métodos keyPress y keyRelease simulan que el usuario presiona y suelta una determinada tecla del teclado, respectivamente.
Conclusión
En este tutorial, intentamos familiarizarlo con la clase Alert de WebDriver que se usa para manejar ventanas emergentes basadas en la web. También le informamos sobre la clase Robot que se puede utilizar para completar el valor en la alerta basada en ventana con la ayuda de los eventos keyPress y keyRelease.
Resumen del artículo:
- Las alertas son un pequeño recuadro que aparece en la pantalla de visualización para brindarle algún tipo de información o para advertirle sobre una operación potencialmente dañina o incluso puede solicitarle los permisos para la operación.
- Popularmente existen dos tipos de alertas –
- Ventanas emergentes de alerta basadas en Windows
- Ventanas emergentes de alerta basadas en la web
- Antes de la secuencia de comandos real, necesitamos importar un paquete para poder crear una secuencia de comandos de WebDriver para manejar un menú desplegable y hacer que la clase Select sea accesible.
- WebDriver ofrece a los usuarios una forma muy eficiente de manejar estas ventanas emergentes utilizando la interfaz de alerta.
- anular despedir () - Los despedir() El método hace clic en el botón 'Cancelar' tan pronto como aparece la ventana emergente.
- anular aceptar () - Los aceptar() El método hace clic en el botón 'Aceptar' tan pronto como aparece la ventana emergente.
- Cuerda getText () - Los getText () El método devuelve el texto que se muestra en el cuadro de alerta.
- vacío sendKeys (String stringToSend) - Los sendKeys () El método ingresa el patrón de cadena especificado en el cuadro de alerta.
- Manejo de ventanas emergentes basadas en ventanas Siempre ha sido un poco complicado, ya que sabemos que Selenium es una herramienta de prueba de automatización que solo admite pruebas de aplicaciones web, es decir, no admite aplicaciones basadas en Windows y la alerta de ventana es una de ellas.
- Clase de robot es una utilidad basada en Java que emula las acciones del teclado y el mouse y se puede usar de manera efectiva para manejar ventanas emergentes basadas en ventanas con la ayuda de eventos de teclado.
- Los métodos keyPress y keyRelease simulan que el usuario presiona y suelta una determinada tecla del teclado, respectivamente.
Siguiente tutorial n. ° 17 : En el próximo tutorial, discutiremos sobre los otros comandos de WebDriver de uso común . Arrojaríamos luz sobre temas como el manejo de excepciones y el manejo de iframe. También discutiremos sobre los comandos get proporcionados en WebDriver.
Explicaríamos estos temas con ejemplos rápidos para hacerlos comprensibles para que los lectores ejerciten estos conceptos en sus scripts del día a día.
Nota para los lectores : Hasta entonces, permanezca atento y automatice las páginas web que tienen ventanas emergentes basadas en la web y ventanas usando la utilidad WebDriver - 'Clase de alerta' y la utilidad Java - 'Clase de robot'.
No dude en publicar sus consultas / comentarios sobre este o cualquier otro tutorial anterior en los comentarios a continuación.
Lectura recomendada
- Tutorial de Cucumber Selenium: Integración de Cucumber Java Selenium WebDriver
- Introducción a Selenium WebDriver - Tutorial de Selenium n. ° 8
- Implementación de nuestro primer script de WebDriver - Tutorial de Selenium WebDriver # 10
- Configuración e instalación completa de WebDriver con Eclipse - Tutorial de Selenium n. ° 9
- Verifique la visibilidad de los elementos web utilizando varios tipos de comandos de WebDriver: tutorial de Selenium n. ° 14
- Tutorial de GeckoDriver Selenium: Cómo usar GeckoDriver en proyectos de Selenium
- Integración de Jenkins con Selenium WebDriver: Tutorial paso a paso
- Scripts eficientes de Selenium y escenarios de resolución de problemas: tutorial de Selenium n. ° 27