Clasa de roboți în Selenium Webdriver

În ce este Robot Class Selenium?

Clasa de roboți in Selenium este utilizat pentru a permite testarea automată pentru implementările de Java platformă. Acesta generează evenimente de intrare în sistemele native pentru automatizarea testelor, demonstrații cu rulare automată și alte aplicații în care utilizatorii au nevoie de control asupra mouse-ului și a tastaturii. Clasa de robot este ușor de implementat și poate fi ușor integrată cu un cadru automatizat.

De ce Robot Class?

Clasa de roboți este utilizat în Selenium pentru că, în anumite cazuri Selenium teste de automatizare, utilizatorii au nevoie de control asupra tastaturii sau mouse-ului pentru a interacționa cu ferestrele sistemului de operare, cum ar fi ferestre pop-up de descărcare, ferestre pop-up de imprimare etc. și aplicații native precum blocnotes, calculator etc. Selenium Webdriver nu poate gestiona aceste ferestre pop-up/aplicații, deci în Java versiunea 1.3, a fost introdusă clasa de robot care poate gestiona ferestre pop-up/aplicații ale sistemului de operare.

Documentația clasei de robot

Documentația clasei de robot in Selenium ajută utilizatorii să înțeleagă definiția de bază, sintaxa și utilizarea tuturor metodelor și funcțiilor disponibile în clasa de robot în Java Pachetul AWT. Utilizatorii pot vizualiza documentația de pe Oficial Oracle . De asemenea, utilizatorii pot crea ei înșiși documentația pe mașina lor locală.

Pentru a crea documentația pe mașina locală, urmați pașii de mai jos -

Pas 1) Veți găsi fișierul src.zip în folderul JDK. Copiați src.zip și extrageți-l într-un alt folder sau director (să spunem D: sau E: )

Documentația clasei de robot

Pas 2) Extrageți folderul src și navigați la (calea până la folderul src)/src/java/awt

Pas 3) Copiați locația curentă a folderului awt și deschideți promptul de comandă.

Pas 4) În cmd, schimbați locația curentă a directorului în folderul awt și tastați „javadoc *.java” așa cum se arată mai jos

Documentația clasei de robot

Așteptați puțin pentru ca sistemul să proceseze, odată finalizat, veți vedea câteva fișiere HTML în folderul awt.

Pas 5) Deschideți index.html

Documentația clasei de robot

Pas 6) Iată că aveți documentația completă a pachetului awt, din bara de navigare din stânga faceți clic pe hyperlinkul „Robot” (vezi 1 marcat în imaginea de mai jos).

Documentația clasei de robot

Aici puteți vedea, de asemenea, toate metodele și interfețele Robot Class (Vezi 2 marcat în imaginea de mai sus).

Metode de clasă de roboți în Selenium și utilizare

Metodele Robot Class pot fi folosite pentru a interacționa cu evenimentele de la tastatură/mouse în timp ce se automatizează browserul. Alternativ AutoIT poate fi folosit, dar dezavantajul său este că generează un fișier executabil (exe) care va funcționa doar pe Windows, deci nu este o opțiune bună de utilizat.

Câteva metode frecvent utilizate de Robot Class în timpul automatizării web:

Metoda 1: apăsați tasta ():

robot.keyPress(KeyEvent.VK_DOWN): Această metodă cu apăsarea tastei săgeată în jos a tastaturii

Metoda 2: mousePress():

robot.mousePress(InputEvent.BUTTON3_DOWN_MASK): Această metodă va apăsa clic dreapta al mouse-ului.

Metoda 3: mouseMove():

robot.mouseMove(point.getX(), point.getY()): Aceasta va muta indicatorul mouse-ului la coordonatele X și Y specificate.

Metoda 4: keyRelease():

robot.keyRelease(KeyEvent.VK_DOWN): Această metodă cu eliberare tasta săgeată în jos a tastaturii

Metoda 5: mouseRelease():

robot.mouseRelease(InputEvent.BUTTON3_DOWN_MASK): Această metodă va elibera clic dreapta al mouse-ului

Exemplu de cod pentru automatizarea cazurilor de utilizare obișnuite folosind Robot Class

  • Să luăm un exemplu de site web http://spreadsheetpage.com/index.php/file/C35/P10/ în care după ce faceți clic pe un element web (.//a[@href=contains(text(),'yearly-calendar.xls']) apare o fereastră pop-up de descărcare a sistemului de operare.
  • Pentru a gestiona acest lucru, folosim clasa Robot (prin crearea unei instanțe a clasei Robot în codul dvs., să zicem Robot robot = robot nou()). Clasa de roboți ne prezentăm în pachetul AWT al JDK.
Tastatură Tastă Metodă
Pentru a apăsa tasta săgeată în jos folosim (robot.keyPress(KeyEvent.VK_DOWN))
Pentru a apăsa tasta TAB folosim (robot.keyPress(KeyEvent.VK_TAB))
Pentru a apăsa tasta Enter folosim (robot.keyPress(KeyEvent.VK_ENTER))

Exemplu de clasă de robot în 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	
     }	 
 }

Verificați acest videoclip pentru a-l vedea în acțiune

Cum se execută codul Robot Class folosind TestNG

Deoarece, acum cunoașteți metodele de bază ale Robot Class, așa că să înțelegem câteva metode mai complexe -

Să presupunem că nu doriți să utilizați metoda click pentru a face clic pe elementul web.

În astfel de cazuri, puteți utiliza metoda mouseMove din clasa Robot.

Pas 1) Metoda mouseMove ia coordonatele x și y ca parametri cum ar fi robot.mouseMove(630, 420) unde 630 indică axa x și 420 indică axa y. Deci, această metodă va muta indicatorul mouse-ului din locația curentă la punctul de intersecție x și y menționat.

Pas 2) Apoi, trebuie să apăsăm butonul mouse-ului. Putem folosi metoda mouseApăsați ca robot.mousePress(InputEvent.BUTTON1_DOWN_MASK) .

Pas 3) După apăsare, mouse-ul trebuie eliberat. Putem folosi robot.mouseRelease(InputEvent.BUTTON1_DOWN_MASK) pentru a elibera clicul stâng al mouse-ului.

Rularea codului folosind testNG:

Cod de rulare folosind Testng necesită dependența maven de testNG sau biblioteca de referință TestNG fișier jar.

TestNG dependență de maven:

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

După adăugarea dependenței Maven sau a fișierului jar. Trebuie să importați adnotarea de testare a testNG. După ce totul este gata, faceți clic dreapta pe codul programului și faceți clic pe Run As, apoi faceți clic pe TestNG… și veți descoperi că codul își va începe execuția folosind API-ul testNG.

Iată codul

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

Verificați acest videoclip pentru a-l vedea în acțiune

Beneficiile clasei de robot

  1. Robot Class poate simula un eveniment de tastatură și mouse
  2. Robot Class poate ajuta la încărcarea/descărcarea fișierelor atunci când utilizați driverul web selenium
  3. Robot Class poate fi integrat cu ușurință cu cadrul actual de automatizare (cuvânt cheie, bazat pe date sau hibrid)

Dezavantajele clasei de robot

Structura robotului are câteva dezavantaje menționate mai jos:

  1. Evenimentul cuvânt cheie/mouse va funcționa numai pe instanța curentă a ferestrei. De exemplu, să presupunem că un cod realizează orice eveniment de clasă robot și în timpul execuției codului utilizatorul s-a mutat la alt ecran, atunci evenimentul cuvânt cheie/mouse va avea loc pe acel ecran.
  2. Majoritatea metodelor precum mouseMove depind de rezoluția ecranului, așa că ar putea exista șansa ca codul care funcționează pe o mașină să nu funcționeze pe alta.

Rezumat

Clasa robot din pachetul AWT este folosită pentru a genera evenimente de tastatură/mouse pentru a interacționa cu ferestrele sistemului de operare și aplicațiile native.

Scopul principal al Robot este de a sprijini integrarea proiectului de teste automate cu seleniu Java platformă