Clase de robot en Selenium controlador web

¿Qué es la clase de robot? Selenium?

Clase de robot in Selenium se utiliza para permitir pruebas automatizadas para implementaciones de Java plataforma. Genera eventos de entrada en sistemas nativos para automatización de pruebas, demostraciones de ejecución automática 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é la clase de robot?

Clase de robot se utiliza en Selenium porque, en ciertos Selenium pruebas de automatización, los usuarios necesitan control sobre el teclado o el mouse para interactuar con las ventanas del sistema operativo, como ventanas emergentes de descarga, ventanas emergentes de impresión, etc. y aplicaciones nativas como el bloc de notas, la calculadora, etc. Selenium Webdriver no puede manejar estas ventanas emergentes/aplicaciones, por lo que en Java En la versión 1.3, se introdujo la clase de robot que puede manejar ventanas emergentes/aplicaciones del sistema operativo.

Documentación de la clase de robot

Tu Documentación de la clase de robot in 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 Java Paquete AWT. Los usuarios pueden ver la documentación en el Oficial Oracle sitio web. Los usuarios también pueden crear ellos mismos la documentación en su máquina local.

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:)

Documentación de la clase de robot

Paso 2) Extraiga la carpeta src y navegue hasta (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

Documentación de la clase de robot

Espere un momento a que el sistema procese; una vez completado, verá algunos archivos HTML en la carpeta awt.

Paso 5) Abrir index.html

Documentación de la clase de robot

Paso 6) Aquí tiene la documentación completa del paquete awt. En la barra de navegación izquierda, haga clic en el hipervínculo "Robot" (consulte 1 marcado en la imagen de abajo).

Documentación de la clase de robot

Aquí también puede ver todos los métodos e interfaces de Robot Class (ver 2 marcados en la imagen de arriba).

Métodos de clase de robot en Selenium y uso

Los métodos de Robot Class se pueden utilizar para interactuar con eventos de teclado/ratón mientras se realiza la automatización del navegador. Alternativamente TI automática Se puede utilizar, pero su inconveniente es que genera un archivo ejecutable (exe) que sólo funcionará en Windows, por lo que no es una buena opción para utilizar.

Algunos métodos comúnmente utilizados de Robot Class durante la automatización web:

Método 1: Pulsar tecla():

robot.keyPress(KeyEvent.VK_DOWN): este método consiste en presionar la tecla de flecha hacia abajo del teclado

Método 2: mousePress():

robot.mousePress(InputEvent.BUTTON3_DOWN_MASK): este método presionará el clic derecho de su mouse.

Método 3: movimiento del mouse():

robot.mouseMove(point.getX(), point.getY()): esto moverá el puntero del mouse a las coordenadas X e Y especificadas.

Método 4: keyRelease():

robot.keyRelease(KeyEvent.VK_DOWN): este método con la tecla de flecha hacia abajo suelta del teclado

Método 5: mouseRelease():

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 como ejemplo el 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 sistema operativo.
  • Para manejar esto usamos la clase Robot (al crear una instancia de Robot Class en su código, digamos Robot robot = nuevo robot()). La clase de robot está presente en el paquete AWT de JDK.
Tecla del teclado Método
Para presionar la tecla de flecha hacia abajo usamos (robot.keyPress(KeyEvent.VK_DOWN))
Para presionar la tecla TAB usamos (robot.keyPress(KeyEvent.VK_TAB))
Para presionar la tecla Enter usamos (robot.keyPress(KeyEvent.VK_ENTER))

Ejemplo de clase de robot en Selenium

import java.awt.AWTException;	
import java.awt.Robot;	
import java.awt.event.KeyEvent;	
import org.openqa.selenium.By;	
import org.openqa.selenium.WebDriver;	
import org.openqa.selenium.firefox.FirefoxDriver;	

class Excercise1 {	

      public static void main(String[] args) throws AWTException, InterruptedException {	
           WebDriver driver = new FirefoxDriver();	
           driver.get("http://spreadsheetpage.com/index.php/file/C35/P10/"); // sample url	
           driver.findElement(By.xpath(".//a[@href=contains(text(),'yearly-calendar.xls')]")).click();	
           Robot robot = new Robot();  // Robot class throws AWT Exception	
           Thread.sleep(2000); // Thread.sleep throws InterruptedException	
           robot.keyPress(KeyEvent.VK_DOWN);  // press arrow down key of keyboard to navigate and select Save radio button	
           
           Thread.sleep(2000);  // sleep has only been used to showcase each event separately	
           robot.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);	
       // press enter key of keyboard to perform above selected action	
     }	 
 }

Mira este vídeo para verlo en acción.

Cómo ejecutar el código de Robot Class usando TestNG

Ahora que conoce los métodos básicos de la clase Robot, comprendamos algunos métodos más complejos:

Supongamos que no desea utilizar el método de clic para hacer clic en el 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 x y 420 indica el eje y. Entonces, este método moverá el puntero del mouse desde la ubicación actual al punto de intersección xey mencionado.

Paso 2) A continuación, debemos presionar el botón del mouse. Podemos usar el método ratónPrensa como uno robot.mousePress(InputEvent.BUTTON1_DOWN_MASK) .

Paso 3) Después de presionar, es necesario soltar el mouse. Nosotros podemos usar robot.mouseRelease(InputEvent.BUTTON1_DOWN_MASK) para liberar el clic izquierdo del mouse.

Ejecutando código usando testNG:

Ejecutando código usando Prueba requiere dependencia maven de testNG o biblioteca referenciada de TestNG jar archivo.

TestNG dependencia de maven:

<dependency>	
  <groupId>org.testng</groupId>
  <artifactId>testng</artifactId>	
  <version>6.1.1</version>	
</dependency>

Después de agregar la dependencia de Maven o el archivo jar, debe importar la anotación de prueba de TestNG. Una vez que esté todo listo, 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 utilizando la API testNG.

Aqui esta el codigo

import java.awt.AWTException;	
import java.awt.Robot;	
import java.awt.event.InputEvent;	
import java.awt.event.KeyEvent;	
import org.openqa.selenium.WebDriver;	
import org.openqa.selenium.firefox.FirefoxDriver;	
import org.testng.annotations.Test;	

public class Excersise1 {	

    @Test	
    public static void  execution() throws InterruptedException, AWTException {
        WebDriver driver = new FirefoxDriver();	
        driver.manage().window().maximize();	
        driver.get("http://spreadsheetpage.com/index.php/file/C35/P10/"); // sample url	
        Robot robot = new Robot();	
        robot.mouseMove(630, 420); // move mouse point to specific location	
        robot.delay(1500);        // delay is to make code wait for mentioned milliseconds before executing next step	
        robot.mousePress(InputEvent.BUTTON1_DOWN_MASK); // press left click	
        robot.mouseRelease(InputEvent.BUTTON1_DOWN_MASK); // release left click	
        robot.delay(1500);	
        robot.keyPress(KeyEvent.VK_DOWN); // press keyboard arrow key to select Save radio button	
        Thread.sleep(2000);	
        robot.keyPress(KeyEvent.VK_ENTER);	
        // press enter key of keyboard to perform above selected action	
    }	
}	

Mira este vídeo para verlo en acción.

Beneficios de la clase de robot

  1. Robot Class puede simular eventos de teclado y mouse
  2. La clase Robot puede ayudar en la carga/descarga de archivos al usar el controlador web Selenium
  3. Robot Class se puede integrar fácilmente con el marco de automatización actual (palabra clave, basado en datos o híbrido)

Desventajas de la clase de robot

El marco del robot tiene algunas desventajas que se mencionan a continuación:

  1. El evento de palabra clave/ratón solo funcionará en la instancia actual de Windows. P.ej. 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 se producirá un evento de palabra clave/ratón en esa pantalla.
  2. 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 Robot en el paquete AWT se utiliza para generar eventos de teclado/mouse para interactuar con ventanas del sistema operativo y aplicaciones nativas.

El propósito principal de Robot es respaldar el desarrollo de proyectos de pruebas automatizadas de Selenium. Java gratuita.