Robotklasse i Selenium Webdriver

Hvad er Robot Class i Selenium?

Robot klasse in Selenium bruges til at aktivere automatiseret test for implementeringer af Java platform. Det genererer inputhændelser i native systemer til testautomatisering, selvkørende demoer og andre applikationer, hvor brugerne har brug for kontrol over mus og tastatur. Robotklassen er nem at implementere, og den kan nemt integreres med en automatiseret ramme.

Hvorfor robotklasse?

Robot klasse anvendes i Selenium fordi, bestemt Selenium automatiseringstest, brugere har brug for kontrol over tastatur eller mus for at interagere med OS-vinduer som download-pop-ups, print pop-ups osv. og native applikationer som notesblok, lommeregner osv. Selenium Webdriver kan ikke håndtere disse pop-ups/applikationer, så ind Java version 1.3 blev der introduceret robotklasse som kan håndtere OS pop-ups/applikationer.

Robotklassedokumentation

Robotklassedokumentation in Selenium hjælper brugere med at forstå den grundlæggende definition, syntaks og brug af alle de metoder og funktioner, der er tilgængelige i robotklassen i Java AWT pakke. Brugere kan se dokumentationen på Officiel Oracle hjemmeside. Brugere kan også selv oprette dokumentationen på deres lokale maskine.

For at oprette dokumentationen på den lokale maskine, følg nedenstående trin-

Trin 1) Du finder filen src.zip i JDK-mappen. Kopier src.zip og udpak det samme i en anden mappe eller mappe (sig D: eller E: )

Robotklassedokumentation

Trin 2) Udpak src-mappe og naviger til (sti til src-mappe)/src/java/awt

Trin 3) Kopier den aktuelle placering af awt-mappen, og åbn kommandoprompten.

Trin 4) I cmd skal du ændre din nuværende mappeplacering til awt-mappe og skrive 'javadoc *.java' som vist nedenfor

Robotklassedokumentation

Vent et stykke tid på, at systemet behandler, når du er færdig, vil du se få HTML-filer i awt-mappen.

Trin 5) Åbn index.html

Robotklassedokumentation

Trin 6) Her har du fuld dokumentation af awt-pakken, fra venstre navigationslinje klik på 'Robot' hyperlink (se 1 markeret i billedet nedenfor).

Robotklassedokumentation

Her kan du også se alle metoder og grænseflader i Robot Class (Se 2 markeret i ovenstående billede).

Robotklassemetoder i Selenium og brug

Robot Class-metoder kan bruges til at interagere med tastatur-/mushændelser, mens du udfører browserautomatisering. Alternativt AutoIT kan bruges, men dens ulempe er, at den genererer en eksekverbar fil (exe), som kun vil fungere på Windows, så det er ikke en god mulighed at bruge.

Nogle almindeligt og populære anvendte metoder til Robot Class under webautomatisering:

Metode 1: tastetryk():

robot.keyPress(KeyEvent.VK_DOWN): Denne metode med tryk ned piletasten på tastaturet

Metode 2: musetryk():

robot.mousePress(InputEvent.BUTTON3_DOWN_MASK): Denne metode vil trykke på højreklik med musen.

Metode 3: mouseMove():

robot.mouseMove(point.getX(), point.getY()): Dette vil flytte musemarkøren til de angivne X- og Y-koordinater.

Metode 4: keyRelease():

robot.keyRelease(KeyEvent.VK_DOWN): Denne metode med slip-ned piletasten på tastaturet

Metode 5: mouseRelease():

robot.mouseRelease(InputEvent.BUTTON3_DOWN_MASK): Denne metode frigiver højreklik med musen

Eksempelkode til at automatisere almindelige use cases ved hjælp af Robot Class

  • Lad os tage et eksempel på webstedet http://spreadsheetpage.com/index.php/file/C35/P10/, hvor efter du har klikket på et webelement (.//a[@href=contains(text(),'yearly-calendar.xls']) vises en pop-up for download af OS.
  • For at håndtere dette bruger vi Robot klasse (ved at oprette en forekomst af Robot Class i din kode siger Robot robot = ny robot()). Robotklasse os til stede i AWT-pakke af JDK.
Tastaturtast Metode
For at trykke ned piletasten vi bruger (robot.keyPress(KeyEvent.VK_DOWN))
For at trykke på TAB-tasten vi bruger (robot.keyPress(KeyEvent.VK_TAB))
For at trykke på Enter-tasten vi bruger (robot.keyPress(KeyEvent.VK_ENTER))

Eksempel på robotklasse i 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	
     }	 
 }

Tjek denne video for at se den i aktion

Sådan udføres Robot Class-kode ved hjælp af TestNG

Siden, nu er du klar over de grundlæggende metoder i Robot Class, så lad os forstå nogle mere komplekse metoder -

Antag, at du ikke ønsker at bruge klikmetode for at klikke på webelement.

I sådanne tilfælde kan du bruge mouseMove-metoden fra Robot-klassen.

Trin 1) mouseMove-metoden tager x- og y-koordinater som parametre som f.eks robot.mouseMove(630, 420) hvor 630 angiver x-aksen og 420 angiver y-aksen. Så denne metode vil flytte din musemarkør fra den aktuelle placering til nævnte x og y skæringspunkt.

Trin 2) Dernæst skal vi trykke på museknappen. Vi kan bruge metoden musetryk ligesom robot.mousePress(InputEvent.BUTTON1_DOWN_MASK) .

Trin 3) Efter tryk skal musen slippes. Vi kan bruge robot.mouseRelease(InputEvent.BUTTON1_DOWN_MASK) for at slippe venstre klik med musen.

Kørende kode ved hjælp af testNG:

Kørende kode ved hjælp af Testng kræver maven afhængighed af testNG eller refereret bibliotek af TestNG jar-fil.

TestNG maven afhængighed:

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

Efter tilføjelse af maven afhængighed eller jar-fil. Du skal importere testannotation af testNG. Når det hele er gjort, skal du bare højreklikke på programkoden og klikke på Kør som og derefter klikke på TestNG... og du vil opdage, at koden vil starte sin eksekvering ved hjælp af testNG API.

Her er koden

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

Tjek denne video for at se den i aktion

Fordele ved Robot Class

  1. Robot Class kan simulere tastatur- og musebegivenhed
  2. Robot Class kan hjælpe med upload/download af filer ved brug af selen web-driver
  3. Robot Class kan nemt integreres med nuværende automatiseringsramme (søgeord, datadrevet eller hybrid)

Ulemper ved Robot Class

Robotramme har få ulemper nævnt nedenfor:

  1. Søgeord/musehændelse vil kun virke på den aktuelle forekomst af Window. Antag f.eks. at en kode udfører en hvilken som helst robotklassehændelse, og under udførelse af kode er brugeren flyttet til en anden skærm, så vil nøgleord/musehændelse forekomme på den skærm.
  2. De fleste af metoderne som mouseMove er skærmopløsningsafhængige, så der kan være en chance for, at kode, der arbejder på én maskine, måske ikke virker på en anden.

Resumé

Robotklasse i AWT-pakken bruges til at generere tastatur-/mushændelser for at interagere med OS-vinduer og native apps.

Det primære formål med Robot er at understøtte indbygning af selenautomatiske testprojekter Java perron

Læs mere Læs mere