Clase de robot
Robot Class en Selenium se utiliza para permitir pruebas automatizadas para implementaciones de la plataforma Java. Genera eventos de entrada en sistemas nativos para la automatización de pruebas, demostraciones autoejecutables y otras aplicaciones donde los usuarios necesitan control sobre el mouse y el teclado. La clase de robot es fácil de implementar y se puede integrar fácilmente con un marco automatizado.
¿Por qué Robot Class?
Robot Class se usa en Selenium porque, en ciertas pruebas de automatización de Selenium, los usuarios necesitan control sobre el teclado o el mouse para interactuar con las ventanas del sistema operativo, como descargar ventanas emergentes, imprimir ventanas emergentes, etc. y aplicaciones nativas como bloc de notas, calculadora, etc. Selenium Webdriver no puede manejar estas ventanas emergentes / aplicaciones, por lo que en la versión 1.3 de Java, se introdujo la clase de robot que puede manejar ventanas emergentes / aplicaciones del sistema operativo.
En este tutorial, aprenderá,
- Beneficios de la clase de robot
- Documentación de la clase de robot
- Comprensión de los métodos internos y el uso de Robot Class
- Cómo ejecutar código de clase de robot usando testNG
- Desventajas de la clase de robot
Beneficios de la clase de robot
- Robot Class puede simular un evento de teclado y mouse
- Robot Class puede ayudar en la carga / descarga de archivos cuando se usa el controlador web selenium
- Robot Class se puede integrar fácilmente con el marco de automatización actual (palabra clave, basado en datos o híbrido)
¿Qué es la documentación de la clase de robot?
La documentación de la clase de robot en Selenium ayuda a los usuarios a comprender la definición básica, la sintaxis y el uso de todos los métodos y funciones disponibles en la clase de robot en el paquete Java AWT. Los usuarios pueden ver la documentación en el sitio web oficial de Oracle. Los usuarios también pueden crear la documentación en su máquina local ellos mismos.
Para crear la documentación en la máquina local, siga los pasos a continuación:
Paso 1) Encontrará el archivo src.zip en la carpeta JDK. Copie src.zip y extraiga el mismo en alguna otra carpeta o directorio (digamos D: o E:)
Paso 2) Extraiga la carpeta src y navegue a (ruta hasta la carpeta src) / src / java / awt
Paso 3) Copie la ubicación actual de la carpeta awt y abra el símbolo del sistema.
Paso 4) En cmd, cambie la ubicación de su directorio actual a la carpeta awt y escriba 'javadoc * .java' como se muestra a continuación
Espere un momento a que el sistema procese, una vez completado, verá algunos archivos HTML en la carpeta awt.
Paso 5) Abra index.html
Paso 6) Aquí tienes la documentación completa del paquete awt, desde la barra de navegación izquierda, haz clic en el hipervínculo 'Robot' (Ver 1 marcado en la imagen de abajo).
Aquí también puede ver todos los métodos e interfaces de Robot Class (Ver 2 marcado en la imagen de arriba).
Comprensión de los métodos internos y el uso de Robot Class
Los métodos de Robot Class se pueden usar para interactuar con eventos de teclado / mouse mientras se realiza la automatización del navegador. Alternativamente, se puede usar AutoIT, pero su inconveniente es que genera un archivo ejecutable (exe) que solo funcionará en Windows, por lo que no es una buena opción para usar.
Algunos métodos de Robot Class de uso común y popular durante la automatización web:
- keyPress (): Ejemplo: robot.keyPress (KeyEvent.VK_DOWN): Este método con presionar la tecla de flecha hacia abajo del teclado
- mousePress (): Ejemplo : robot.mousePress (InputEvent.BUTTON3_DOWN_MASK): Este método presionará el botón derecho del mouse.
- mouseMove (): Ejemplo : robot.mouseMove (point.getX (), point.getY ()): Esto moverá el puntero del mouse a las coordenadas X e Y especificadas.
- keyRelease (): Ejemplo: robot.keyRelease (KeyEvent.VK_DOWN): este método con la tecla de flecha hacia abajo de liberación del teclado
- mouseRelease (): Ejemplo: robot.mouseRelease (InputEvent.BUTTON3_DOWN_MASK): Este método liberará el clic derecho del mouse
Código de muestra para automatizar casos de uso comunes usando Robot Class
- Tomemos un ejemplo del sitio web http://spreadsheetpage.com/index.php/file/C35/P10/ en el que después de hacer clic en un elemento web ( .//a[@href=contains(text(),'yearly- calendar.xls '] ) aparece una ventana emergente de descarga del SO.
- Para manejar esto usamos la clase Robot (al crear una instancia de la Clase Robot en su código, diga Robot robot = new Robot () ). Clase de robot presente en el paquete AWT de JDK.
- Para presionar la tecla de flecha hacia abajo del teclado usamos ( robot.keyPress (KeyEvent.VK_DOWN))
- Para presionar la tecla TAB del teclado (usamos robot.keyPress (KeyEvent.VK_TAB))
- Para presionar la tecla Enter usamos ( robot.keyPress (KeyEvent.VK_ENTER)).
Aquí hay un código de muestra
import java.awt.AWTException;importar java.awt.Robot;import java.awt.event.KeyEvent;import org.openqa.selenium.By;importar org.openqa.selenium.WebDriver;importar org.openqa.selenium.firefox.FirefoxDriver;class Excercise1 {public static void main (String [] args) lanza AWTException, InterruptedException {Controlador WebDriver = nuevo FirefoxDriver ();driver.get ("http://spreadsheetpage.com/index.php/file/C35/P10/"); // URL de muestradriver.findElement (By.xpath (".// a [@ href = contiene (texto (), 'calendario-anual.xls')]")). click ();Robot robot = nuevo Robot (); // La clase de robot arroja una excepción AWTThread.sleep (2000); // Thread.sleep lanza InterruptedExceptionrobot.keyPress (KeyEvent.VK_DOWN); // presione la tecla de flecha hacia abajo del teclado para navegar y seleccione el botón de opción GuardarThread.sleep (2000); // sleep solo se ha utilizado para mostrar cada evento por separadorobot.keyPress (KeyEvent.VK_TAB);Thread.sleep (2000);robot.keyPress (KeyEvent.VK_TAB);Thread.sleep (2000);robot.keyPress (KeyEvent.VK_TAB);Thread.sleep (2000);robot.keyPress (KeyEvent.VK_ENTER);// presione la tecla enter del teclado para realizar la acción seleccionada arriba}}
Mira este video para verlo en acción
Cómo ejecutar código de clase de robot usando TestNG
Ya que, ahora conoce los métodos básicos de Robot Class, así que entendamos algunos métodos más complejos:
Suponga que no desea utilizar el método de clic para hacer clic en un elemento web.
En tales casos, puede utilizar el método mouseMove de la clase Robot.
Paso 1) El método mouseMove toma las coordenadas xey como parámetros como robot.mouseMove (630, 420) donde 630 indica el eje xy 420 indica el eje y. Por lo tanto, este método moverá el puntero del mouse desde la ubicación actual hasta el punto de intersección xey mencionado.
Paso 2) A continuación, debemos presionar el botón del mouse. Podemos usar el método mousePress como robot.mousePress (InputEvent.BUTTON1_DOWN_MASK) .
Paso 3) Después de presionar, es necesario soltar el mouse. Podemos usar robot.mouseRelease (InputEvent.BUTTON1_DOWN_MASK ) para soltar el clic izquierdo de un mouse.
Ejecutando código usando testNG:
La ejecución de código usando Testng requiere la dependencia maven de testNG o la biblioteca referenciada del archivo jar de TestNG.
Dependencia de TestNG maven:
org.testng testng 6.1.1
Después de agregar la dependencia de maven o el archivo jar. Necesita importar la anotación de prueba de testNG. Una vez que esté todo hecho, simplemente haga clic derecho en el código del programa y haga clic en Ejecutar como luego haga clic en TestNG
… Y encontrará que el código comenzará su ejecución usando testNG API.Aqui esta el codigo
import java.awt.AWTException;importar java.awt.Robot;import java.awt.event.InputEvent;import java.awt.event.KeyEvent;importar org.openqa.selenium.WebDriver;importar org.openqa.selenium.firefox.FirefoxDriver;import org.testng.annotations.Test;public class Excersise1 {@Pruebaejecución vacía estática pública () lanza InterruptedException, AWTException {Controlador WebDriver = nuevo FirefoxDriver ();driver.manage (). window (). maximizar ();driver.get ("http://spreadsheetpage.com/index.php/file/C35/P10/"); // URL de muestraRobot robot = nuevo Robot ();robot.mouseMove (630, 420); // mover el puntero del mouse a una ubicación específicarobot.delay (1500); // el retraso es hacer que el código espere los milisegundos mencionados antes de ejecutar el siguiente pasorobot.mousePress (InputEvent.BUTTON1_DOWN_MASK); // presione clic izquierdorobot.mouseRelease (InputEvent.BUTTON1_DOWN_MASK); // suelte el clic izquierdorobot.delay (1500);robot.keyPress (KeyEvent.VK_DOWN); // presione la tecla de flecha del teclado para seleccionar el botón de opción GuardarThread.sleep (2000);robot.keyPress (KeyEvent.VK_ENTER);// presione la tecla enter del teclado para realizar la acción seleccionada arriba}}
Mira este video para verlo en acción
Desventajas de la clase de robot
La estructura del robot tiene algunas desventajas que se mencionan a continuación:
- El evento de palabra clave / mouse solo funcionará en la instancia actual de Window. Por ejemplo, supongamos que un código está realizando cualquier evento de clase de robot, y durante la ejecución del código el usuario se ha movido a otra pantalla, entonces ocurrirá un evento de palabra clave / mouse en esa pantalla.
- La mayoría de los métodos como mouseMove dependen de la resolución de la pantalla, por lo que existe la posibilidad de que el código que funciona en una máquina no funcione en otra.
Resumen
La clase de robot en el paquete AWT se usa para generar eventos de teclado / mouse para interactuar con las ventanas del sistema operativo y las aplicaciones nativas.
El propósito principal de Robot es apoyar la construcción del proyecto de pruebas automatizadas de selenio en la plataforma Java
Este artículo es una contribución de Ramandeep Singh, que es un ingeniero de automatización de pruebas en una importante empresa multinacional.