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
El 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:)
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
Espere un momento a que el sistema procese; una vez completado, verรก algunos archivos HTML en la carpeta awt.
Paso 5) Abrir index.html
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).
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 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
- Robot Class puede simular eventos de teclado y mouse
- La clase Robot puede ayudar en la carga/descarga de archivos al usar 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)
Desventajas de la clase de robot
El marco del robot tiene algunas desventajas que se mencionan a continuaciรณn:
- 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.
- 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 plataforma




