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 src.zip-filen i JDK-mappen. Kopier src.zip og ex.tracdet samme i en anden mappe eller katalog (f.eks. D: eller E:)
Trin 2) Extract src-mappen og naviger til (sti til src-mappen)/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
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
Trin 6) Her har du fuld dokumentation af awt-pakken, fra venstre navigationslinje klik pรฅ 'Robot' hyperlink (se 1 markeret i billedet nedenfor).
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 som 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
- Robot Class kan simulere tastatur- og musebegivenhed
- Robot Class kan hjรฆlpe med upload/download af filer ved brug af selen web-driver
- 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:
- 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.
- 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




