Classe Robot dentro Selenium Webdriver

In cosa consiste Robot Class Selenium?

Classe Robot in Selenium viene utilizzato per abilitare test automatizzati per le implementazioni di Java piattaforma. Genera eventi di input in sistemi nativi per l'automazione dei test, demo autoeseguibili e altre applicazioni in cui gli utenti necessitano del controllo su mouse e tastiera. La classe Robot è facile da implementare e può essere facilmente integrata con un framework automatizzato.

Perchè il corso sui robot?

Classe Robot è usato in Selenium perché, in certo Selenium test di automazione, gli utenti hanno bisogno del controllo della tastiera o del mouse per interagire con le finestre del sistema operativo come i pop-up di download, i pop-up di stampa, ecc. e le applicazioni native come il blocco note, la calcolatrice, ecc. Selenium Webdriver non è in grado di gestire questi popup/applicazioni, quindi in Java versione 1.3, è stata introdotta la classe robot in grado di gestire popup/applicazioni del sistema operativo.

Documentazione sulla classe robot

La sezione Currents, dedicata a opere audaci e innovative di artisti emergenti e affermati, include la prima statunitense di Mare’s Nest di Ben Rivers, descritto come “un enigmatico road movie ambientato in un mondo post-apocalittico governato da bambini”. Tra gli altri titoli spiccano Dracula di Radu Jude e With Hasan in Gaza di Kamal Aljafari. Documentazione sulla classe robot in Selenium aiuta gli utenti a comprendere la definizione di base, la sintassi e l'utilizzo di tutti i metodi e le funzioni disponibili nella classe robot in Java Pacchetto AWT. Gli utenti possono visualizzare la documentazione su Ufficiale Oracle sito web ufficiale. Gli utenti possono anche creare autonomamente la documentazione sul proprio computer locale.

Per creare la documentazione sul computer locale, seguire i passaggi seguenti:

Passo 1) Troverai il file src.zip nella cartella JDK. Copia src.zip ed estrai lo stesso in qualche altra cartella o directory (ad esempio D: o E:)

Documentazione sulla classe robot

Passo 2) Estrai la cartella src e vai a (percorso fino alla cartella src)/src/java/awt

Passo 3) Copia la posizione corrente della cartella awt e apri il prompt dei comandi.

Passo 4) In cmd, modifica la posizione della directory corrente nella cartella awt e digita "javadoc *.java" come mostrato di seguito

Documentazione sulla classe robot

Attendi qualche istante affinché il sistema elabori, una volta completato vedrai alcuni file HTML nella cartella awt.

Passo 5) Apri indice.html

Documentazione sulla classe robot

Passo 6) Ecco la documentazione completa del pacchetto awt, dalla barra di navigazione sinistra fai clic sul collegamento ipertestuale "Robot" (vedi 1 indicato nell'immagine seguente).

Documentazione sulla classe robot

Qui puoi anche vedere tutti i metodi e le interfacce di Robot Class (vedi 2 contrassegnati nell'immagine sopra).

Metodi di classe Robot in Selenium e utilizzo

I metodi Robot Class possono essere utilizzati per interagire con eventi di tastiera/mouse durante l'automazione del browser. In alternativa AutoIT può essere utilizzato, ma il suo svantaggio è che genera un file eseguibile (exe) che funziona solo su Windows, quindi non è una buona opzione da utilizzare.

Alcuni metodi comunemente utilizzati per Robot Class durante l'automazione web:

Metodo 1: keyPress():

robot.keyPress(KeyEvent.VK_DOWN): questo metodo premendo il tasto freccia giù della tastiera

Metodo 2: mousePress():

robot.mousePress(InputEvent.BUTTON3_DOWN_MASK): questo metodo premerà il clic destro del mouse.

Metodo 3: mouseMove():

robot.mouseMove(point.getX(), point.getY()): sposterà il puntatore del mouse sulle coordinate X e Y specificate.

Metodo 4: keyRelease():

robot.keyRelease(KeyEvent.VK_DOWN): questo metodo rilascia il tasto freccia giù della tastiera

Metodo 5: mouseRelease():

robot.mouseRelease(InputEvent.BUTTON3_DOWN_MASK): questo metodo rilascerà il clic destro del mouse

Codice di esempio per automatizzare i casi d'uso comuni utilizzando Robot Class

  • Prendiamo l'esempio del sito web http://spreadsheetpage.com/index.php/file/C35/P10/ in cui dopo aver fatto clic su un elemento web (.//a[@href=contains(text(),'yearly-calendar.xls']) viene visualizzato un popup di download del sistema operativo.
  • Per gestire questo utilizziamo la classe Robot (creando un'istanza di Robot Class nel tuo codice, ad esempio Robot robot = nuovo robot()). Classe robot presente nel pacchetto AWT di JDK.
Tasto della tastiera Metodo
Per premere il tasto freccia giù usiamo (robot.keyPress(KeyEvent.VK_DOWN))
Per premere il tasto TAB usiamo (robot.keyPress(KeyEvent.VK_TAB))
Per premere il tasto Invio usiamo (robot.keyPress(KeyEvent.VK_ENTER))

Esempio di classe Robot in 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	
     }	 
 }

Guarda questo video per vederlo in azione

Come eseguire il codice Robot Class utilizzando TestNG

Poiché ora sei a conoscenza dei metodi di base della classe Robot, comprendiamo alcuni metodi più complessi:

Supponiamo che tu non voglia usare il file fare clic su metodo per aver fatto clic sull'elemento web.

In questi casi, puoi utilizzare il metodo mouseMove della classe Robot.

Passo 1) Il metodo mouseMove accetta le coordinate xey come parametri robot.mouseMove(630, 420) dove 630 indica l'asse x e 420 indica l'asse y. Quindi, questo metodo sposterà il puntatore del mouse dalla posizione corrente al punto di intersezione xey menzionato.

Passo 2) Successivamente, dobbiamo premere il pulsante del mouse. Possiamo usare il metodo mousePress piace robot.mousePress(InputEvent.BUTTON1_DOWN_MASK) .

Passo 3) Dopo aver premuto, è necessario rilasciare il mouse. Possiamo usare robot.mouseRelease(InputEvent.BUTTON1_DOWN_MASK) per rilasciare il clic sinistro del mouse.

Esecuzione del codice utilizzando testNG:

Esecuzione del codice utilizzando Test richiede la dipendenza maven di testNG o della libreria referenziata di TestNG file jar.

TestNG dipendenza da esperto:

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

Dopo aver aggiunto la dipendenza maven o il file jar. Devi importare l'annotazione di test di testNG. Una volta fatto tutto, fai clic con il pulsante destro del mouse sul codice del programma e fai clic su Esegui come, quindi fai clic su TestNG… e scoprirai che l'esecuzione del codice inizierà utilizzando l'API testNG.

Ecco il codice

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	
    }	
}	

Guarda questo video per vederlo in azione

Vantaggi della lezione di robot

  1. Robot Class può simulare eventi di tastiera e mouse
  2. Robot Class può aiutare a caricare/scaricare file quando si utilizza il driver web selenium
  3. Robot Class può essere facilmente integrato con l'attuale framework di automazione (parole chiave, basato sui dati o ibrido)

Svantaggi della classe Robot

La struttura del robot presenta alcuni svantaggi menzionati di seguito:

  1. L'evento parola chiave/mouse funzionerà solo sull'istanza corrente di Window. Ad esempio, supponiamo che un codice stia eseguendo un evento di classe robot e durante l'esecuzione del codice l'utente si sia spostato su un'altra schermata, su quella schermata si verificherà un evento parola chiave/mouse.
  2. La maggior parte dei metodi come mouseMove dipende dalla risoluzione dello schermo, quindi potrebbe esserci la possibilità che il codice che funziona su un computer non funzioni su un altro.

Sintesi

La classe Robot nel pacchetto AWT viene utilizzata per generare eventi tastiera/mouse per interagire con le finestre del sistema operativo e le app native.

Lo scopo principale di Robot è supportare il progetto di test automatizzati di selenio integrato Java piattaforma