Saltar al contenido

Clase de robot en Selenium Webdriver

Robot sonó

Robot sonó El selenio se utiliza para permitir pruebas automatizadas para implementar plataformas Java. Genera eventos de entrada en sistemas nativos para la automatización de pruebas, demostración autoejecutable y otras aplicaciones donde los usuarios controlan un mouse y un 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 sonó utilizado en Selenium porque, en ciertas pruebas de selenio automatizadas, los usuarios deben tener el control de un teclado o mouse para interactuar con el sistema operativo Windows, 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 tanto Java Se introdujo la versión 1.3, una clase de robot que puede manejar aplicaciones emergentes / SO.

En este tutorial, aprenderá,

Ventajas de la clase de robot

  1. Class Robot puede simular un evento de teclado y mouse
  2. Robot Class puede ayudar a cargar / descargar archivos usando un 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)

El es 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 una 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 una máquina local, siga los pasos a continuación:

Paso 1) Encontrará el archivo src.zip en la carpeta JDK. Copie src.zip y elimine el mismo en alguna otra carpeta o directorio (digamos D: o E 🙂

Paso 2) Extraiga la carpeta src y navegue hasta (ruta hasta la carpeta src)/ src / java / aut

Paso 3) Copie la ubicación actual de la carpeta automatizada y abra el símbolo del sistema.

Paso 4) En cmd, cambie la ubicación del directorio actual a una carpeta automática y escriba ‘javadoc * .java’ como se muestra a continuación

Espere un momento para procesar el sistema, cuando termine no verá muchos archivos HTML en la carpeta aut.

Paso 5) Abrir index.html

Paso 6) Aquí está la documentación completa del paquete de automatización, desde la barra de navegación izquierda, haga clic en el hipervínculo ‘Robot’ (Ver 1 marcado a continuación en la imagen).

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

Comprender los métodos y el uso interno de Robot Class.

Los modos de clase de robot se pueden usar para interactuar con eventos de teclado / mouse mientras se realiza la automatización del navegador. alternativamente AutoIT se puede usar, pero la desventaja es que genera un archivo ejecutable (exe) que solo funcionará en Windows, por lo que usarlo no es una buena opción.

Algunos métodos de Robot Class comunes y comunes durante la automatización web:

  • teclaPresione (): Ejemplo: robot.keyPress (KeyEvent.VK_DOWN): este método para presionar la tecla de flecha del teclado
  • mousePress (): Ejemplo : robot.mousePress (InputEvent.BUTTON3_DOWN_MASK): Este método es un clic derecho del mouse.
  • movimiento del ratón (): 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 de soltar la tecla de flecha del teclado
  • luchRelease (): Ejemplo: robot.mouseRelease (InputEvent.BUTTON3_DOWN_MASK): este método libera el clic derecho del mouse

Código de muestra para automatizar casos de uso comunes usando Robot Class

  • Deje ejemplos del sitio web http://spreadsheetpage.com/index.php/file/C35/P10/, después de hacer clic en un elemento web (.//a[@href=contains(text(),’yearly-calendar.xls’]) parece ser una ventana emergente de descarga del sistema operativo.
  • Para manejar esto usamos una clase de Robot (al crear un ejemplo de una Clase de Robot en su código, digamos Robot Robot = Nuevo Robot ()). Clase de robot con nosotros presentada en paquete AWD de JDK.
  • Para presionar la tecla de flecha del teclado usamos (robot.keyPress (KeyEvent.VK_DOWN))
  • Para presionar la tecla TAB del teclado (usamos robot.keyPress (KeyEvent.VK_TAB))
  • Para usar la tecla Enter usamos (robot.keyPress (KeyEvent.VK_ENTER)).

Aquí hay un código de muestra


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 video para verlo en acción

Cómo ejecutar código de clase de robot usando TestNG

Desde entonces, está familiarizado con los métodos básicos de Robot Class, así que entendamos algunos métodos más complejos:

Suponga que usted n / A quiero el modo clic por hacer clic en un elemento web.

En tales casos, puede utilizar el método mouseMove de la clase Robot.

Paso 1) El modo MouseMove toma las coordenadas xey como parámetros robot.mouseMove (630, 420) cuando 630 representa el eje xy 420 representa el eje y. Por lo tanto, este método moverá el puntero del mouse desde la posición actual al punto de intersección indicado xey.

Paso 2) A continuación, debemos presionar el botón del mouse. Podemos usar el método mousePress bien 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 soltar un clic izquierdo del mouse.

Código actual usando testNG:

Usando el código actual Testng Requiere una biblioteca de referencia de archivos jar de testNG o TestNG virgen.

TestNG dependencia virgen:


<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 una anotación de prueba en testNG. Cuando haya terminado, 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á a ejecutarse usando testNG API.

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 video para verlo en acción

Desventajas de la clase de robot

El esqueleto del robot que se menciona a continuación tiene algunas desventajas:

  1. El evento de palabra clave / mouse solo funcionará en la ventana actual. Por ejemplo, cualquier evento de clase de robot probablemente esté haciendo código, y durante la ejecución del código, el usuario se movió a otra pantalla y luego se produce un evento de palabra clave / mouse en esa pantalla.
  2. La mayoría de métodos como mouseMove se basan en la resolución de la pantalla, por lo que el código que funciona en una máquina puede funcionar en otra.

Resumen

El paquete AWT utiliza una clase de robot para generar eventos de teclado / mouse para interactuar con el sistema operativo Windows y las aplicaciones nativas.

El objetivo principal de Robot es apoyar un proyecto para construir pruebas de automatización de selenio en una plataforma Java.

Este artículo es de Ramandeep Singh, ingeniero de automatización de pruebas en una importante empresa multinacional.