Classe di robot in Selenium Webdriver

Sommario:

Anonim

Classe di robot

Robot Class in Selenium viene utilizzato per abilitare i test automatici per le implementazioni della piattaforma Java. Genera eventi di input in sistemi nativi per l'automazione dei test, demo a esecuzione automatica 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é Robot Class?

Robot Class viene utilizzato in Selenium perché, in alcuni test di automazione Selenium, gli utenti devono controllare la tastiera o il mouse per interagire con le finestre del sistema operativo come i popup di download, i popup di stampa, ecc. E le applicazioni native come il blocco note, la calcolatrice, ecc. Selenio Webdriver non è in grado di gestire questi pop-up / applicazioni, quindi nella versione Java 1.3 è stata introdotta la classe robot che può gestire pop-up / applicazioni del sistema operativo.

In questo tutorial imparerai,

  • Vantaggi di Robot Class
  • Documentazione di Robot Class
  • Comprensione dei metodi interni e dell'utilizzo di Robot Class
  • Come eseguire il codice della classe del robot utilizzando testNG
  • Svantaggi della classe di robot

Vantaggi di Robot Class

  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 selenio
  3. Robot Class può essere facilmente integrato con l'attuale framework di automazione (parola chiave, data-driven o ibrido)

Cos'è la documentazione sulla classe dei robot?

La documentazione della 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 nel pacchetto Java AWT. Gli utenti possono visualizzare la documentazione sul sito Web ufficiale di Oracle. Gli utenti possono anche creare la documentazione sul proprio computer locale.

Per creare la documentazione sulla macchina locale, seguire i passaggi seguenti:

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

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

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

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

Attendi un po 'che il sistema si sviluppi, una volta completato vedrai pochi file HTML nella cartella awt.

Passaggio 5) Apri index.html

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

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

Comprensione dei metodi interni e dell'utilizzo di Robot Class

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

Alcuni metodi usati comunemente e popolari di Robot Class durante l'automazione web:

  • keyPress (): Esempio: robot.keyPress (KeyEvent.VK_DOWN): questo metodo con premere il tasto freccia giù della tastiera
  • mousePress (): Esempio : robot.mousePress (InputEvent.BUTTON3_DOWN_MASK): questo metodo premerà il clic destro del mouse.
  • mouseMove (): Esempio : robot.mouseMove (point.getX (), point.getY ()): Questo sposterà il puntatore del mouse sulle coordinate X e Y specificate.
  • keyRelease (): Esempio: robot.keyRelease (KeyEvent.VK_DOWN): questo metodo con il tasto freccia giù di rilascio della tastiera
  • mouseRelease (): Esempio: 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, usiamo la classe Robot (creando un'istanza della classe Robot nel tuo codice diciamo Robot robot = new Robot () ). La classe di robot è presente nel pacchetto AWT di JDK.
  • Per premere il tasto freccia giù della tastiera usiamo ( robot.keyPress (KeyEvent.VK_DOWN))
  • Per premere il tasto TAB della tastiera (usiamo robot.keyPress (KeyEvent.VK_TAB))
  • Per premere il tasto Invio usiamo ( robot.keyPress (KeyEvent.VK_ENTER)).

Ecco un codice di esempio

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) genera AWTException, InterructedException {Driver WebDriver = nuovo FirefoxDriver ();driver.get ("http://spreadsheetpage.com/index.php/file/C35/P10/"); // URL di esempiodriver.findElement (By.xpath (".// a [@ href = contains (text (), 'yearly-calendar.xls')]")). click ();Robot robot = nuovo Robot (); // La classe Robot genera un'eccezione AWTThread.sleep (2000); // Thread.sleep genera InterructedExceptionrobot.keyPress (KeyEvent.VK_DOWN); // premere il tasto freccia giù della tastiera per navigare e selezionare il pulsante di opzione SalvaThread.sleep (2000); // sleep è stato utilizzato solo per mostrare ogni evento separatamenterobot.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);// premere il tasto Invio della tastiera per eseguire l'azione sopra selezionata}} 

Guarda questo video per vederlo in azione

Come eseguire il codice della classe Robot utilizzando TestNG

Da allora, ora sei a conoscenza dei metodi di base di Robot Class, quindi comprendiamo alcuni metodi più complessi -

Supponi di non voler utilizzare il metodo del clic per fare clic su un elemento web.

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

Passaggio 1) il metodo mouseMove accetta le coordinate xey come parametri come 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.

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

Passaggio 3) Dopo aver premuto, il mouse deve essere rilasciato. Possiamo usare robot.mouseRelease (InputEvent.BUTTON1_DOWN_MASK ) per rilasciare il clic sinistro del mouse.

Esecuzione del codice utilizzando testNG:

L'esecuzione del codice utilizzando Testng richiede la dipendenza maven di testNG o la libreria di riferimento del file jar TestNG.

TestNG maven dipendenza:

 org.testng  testng  6.1.1  

Dopo aver aggiunto la dipendenza Maven o il file jar. È necessario importare l'annotazione di prova di testNG. Al termine, 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 il codice inizierà la sua esecuzione 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 {@Testpublic static void execution () genera InterructedException, AWTException {Driver WebDriver = nuovo FirefoxDriver ();driver.manage (). window (). maxim ();driver.get ("http://spreadsheetpage.com/index.php/file/C35/P10/"); // URL di esempioRobot robot = nuovo Robot ();robot.mouseMove (630, 420); // sposta il punto del mouse in una posizione specificarobot.delay (1500); // il ritardo consiste nel far attendere il codice per i millisecondi menzionati prima di eseguire il passaggio successivorobot.mousePress (InputEvent.BUTTON1_DOWN_MASK); // premere clic sinistrorobot.mouseRelease (InputEvent.BUTTON1_DOWN_MASK); // rilascia il clic sinistrorobot.delay (1500);robot.keyPress (KeyEvent.VK_DOWN); // premere il tasto freccia della tastiera per selezionare il pulsante di opzione SalvaThread.sleep (2000);robot.keyPress (KeyEvent.VK_ENTER);// premere il tasto Invio della tastiera per eseguire l'azione sopra selezionata}}

Guarda questo video per vederlo in azione

Svantaggi di Robot Class

La struttura del robot presenta alcuni svantaggi menzionati di seguito:

  1. L'evento parola chiave / mouse funziona 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 altro schermo, quindi su quello schermo 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 una macchina non funzioni su un'altra.

Sommario

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 al selenio compilato nella piattaforma Java

Questo articolo è fornito da Ramandeep Singh, ingegnere di automazione dei test presso un'importante MNC.