Robotklass i Selenium Webdriver
Vad รคr Robot Class i Selenium?
Robotklass in Selenium anvรคnds fรถr att mรถjliggรถra automatiserad testning fรถr implementeringar av Java plattform. Den genererar ingรฅngshรคndelser i inbyggda system fรถr testautomatisering, sjรคlvkรถrande demos och andra applikationer dรคr anvรคndare behรถver kontroll รถver mus och tangentbord. Robotklass รคr lรคtt att implementera och det kan enkelt integreras med ett automatiserat ramverk.
Varfรถr robotklass?
Robotklass anvรคnds i Selenium eftersom, i vissa Selenium automatiseringstester, anvรคndare behรถver kontroll รถver tangentbordet eller musen fรถr att interagera med OS-fรถnster som nedladdnings-popup-fรถnster, skriva ut popup-fรถnster, etc. och inbyggda applikationer som anteckningsblock, kalkylator, etc. Selenium Webdriver kan inte hantera dessa popup-fรถnster/applikationer, sรฅ in Java version 1.3 introducerades robotklass som kan hantera OS-popups/applikationer.
Robotklassdokumentation
Ocuco-landskapet Robotklassdokumentation in Selenium hjรคlper anvรคndare att fรถrstรฅ den grundlรคggande definitionen, syntaxen och anvรคndningen av alla metoder och funktioner som finns tillgรคngliga i robotklass i Java AWT-paket. Anvรคndare kan se dokumentationen pรฅ Officiella Oracle webbplats. Anvรคndare kan ocksรฅ sjรคlva skapa dokumentationen pรฅ sin lokala dator.
Fรถr att skapa dokumentationen pรฅ den lokala datorn, fรถlj stegen nedan-
Steg 1) Du hittar src.zip-filen i JDK-mappen. Kopiera src.zip och ex.tracsamma sak i nรฅgon annan mapp eller katalog (t.ex. D: eller E:)
Steg 2) Extract src-mappen och navigera till (sรถkvรคg till src-mappen)/src/java/awt
Steg 3) Kopiera den aktuella platsen fรถr awt-mappen och รถppna kommandotolken.
Steg 4) I cmd, รคndra din nuvarande katalogplats till awt-mappen och skriv 'javadoc *.java' som visas nedan
Vรคnta ett tag tills systemet bearbetas, nรคr det รคr klart kommer du att se nรฅgra HTML-filer i awt-mappen.
Steg 5) รppna index.html
Steg 6) Hรคr har du fullstรคndig dokumentation av awt-paketet, frรฅn vรคnster navigeringsfรคlt klickar du pรฅ "Robot" hyperlรคnk (se 1 markerad i bilden nedan).
Hรคr kan du ocksรฅ se alla metoder och grรคnssnitt fรถr Robot Class (Se 2 markerade i bilden ovan).
Robotklassmetoder i Selenium och anvรคndning
Robot Class-metoder kan anvรคndas fรถr att interagera med tangentbords-/mushรคndelser medan du gรถr webblรคsarautomatisering. Alternativt AutoIT kan anvรคndas, men dess nackdel รคr att den genererar en kรถrbar fil (exe) som bara fungerar pรฅ Windows, sรฅ det รคr inte ett bra alternativ att anvรคnda.
Nรฅgra vanliga och populรคra metoder fรถr Robot Class under webbautomatisering:
Metod 1: keyPress():
robot.keyPress(KeyEvent.VK_DOWN): Denna metod med att trycka ner piltangenten pรฅ tangentbordet
Metod 2: MousePress():
robot.mousePress(InputEvent.BUTTON3_DOWN_MASK): Denna metod kommer att hรถgerklicka med musen.
Metod 3: mouseMove():
robot.mouseMove(point.getX(), point.getY()): Detta kommer att flytta muspekaren till de angivna X- och Y-koordinaterna.
Metod 4: keyRelease():
robot.keyRelease(KeyEvent.VK_DOWN): Den hรคr metoden med slรคpp nedรฅtpil pรฅ tangentbordet
Metod 5: mouseRelease():
robot.mouseRelease(InputEvent.BUTTON3_DOWN_MASK): Den hรคr metoden slรคpper hรถgerklicket med musen
Exempelkod fรถr att automatisera vanliga anvรคndningsfall med Robot Class
- Lรฅt oss ta ett exempel pรฅ webbplatsen http://spreadsheetpage.com/index.php/file/C35/P10/ dรคr efter att du klickat pรฅ ett webbelement (
.//a[@href=contains(text(),'yearly-calendar.xls']) ett popup-fรถnster fรถr nedladdning av operativsystem visas.
- Fรถr att hantera detta anvรคnder vi Robot class (genom att skapa en instans av Robot Class i din kod Robotrobot = ny robot()) . Robotklass oss nรคrvarande i AWT-paket av JDK.
| Tangentbordstangent | Metod |
|---|---|
| Fรถr att trycka pรฅ nedรฅtpilen | vi anvรคnder (robot.keyPress(KeyEvent.VK_DOWN)) |
| Fรถr att trycka pรฅ TAB-tangenten | vi anvรคnder (robot.keyPress(KeyEvent.VK_TAB)) |
| Fรถr att trycka pรฅ Enter | vi anvรคnder (robot.keyPress(KeyEvent.VK_ENTER)) |
Exempel pรฅ robotklass 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
}
}
Kolla in den hรคr videon fรถr att se hur den fungerar
Hur man kรถr Robot Class-kod med TestNG
Eftersom du nu รคr medveten om grundlรคggande metoder fรถr Robot Class sรฅ lรฅt oss fรถrstรฅ nรฅgra mer komplexa metoder โ
Anta att du inte vill anvรคnda klickmetoden fรถr att klicka pรฅ webbelement.
I sรฅdana fall kan du anvรคnda mouseMove-metoden i klassen Robot.
Steg 1) mouseMove-metoden tar x- och y-koordinater som parametrar som robot.mouseMove(630, 420) dรคr 630 indikerar x-axeln och 420 indikerar y-axeln. Sรฅ, den hรคr metoden kommer att flytta din muspekare frรฅn den aktuella platsen till nรคmnda skรคrningspunkt x och y.
Steg 2) Dรคrefter mรฅste vi trycka pรฅ musknappen. Vi kan anvรคnda metoden mustryck tycka om robot.mousePress(InputEvent.BUTTON1_DOWN_MASK) .
Steg 3) Efter tryck mรฅste musen slรคppas. Vi kan anvรคnda robot.mouseRelease(InputEvent.BUTTON1_DOWN_MASK) fรถr att slรคppa vรคnster musklick.
Kรถr kod med testNG:
Kรถr kod med hjรคlp av Testng krรคver maven beroende av testNG eller refererat bibliotek av TestNG jar-fil.
TestNG maven beroende:
<dependency> <groupId>org.testng</groupId> <artifactId>testng</artifactId> <version>6.1.1</version> </dependency>
Efter att ha lagt till maven-beroende eller jar-fil. Du mรฅste importera testanteckning av testNG. Nรคr allt รคr klart, hรถgerklicka bara pรฅ programkoden och klicka pรฅ Kรถr som och klicka sedan pรฅ TestNG... och du kommer att upptรคcka att koden bรถrjar kรถras med testNG API.
Hรคr รคr 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
}
}
Kolla in den hรคr videon fรถr att se hur den fungerar
Fรถrdelar med Robot Class
- Robot Class kan simulera tangentbords- och mushรคndelser
- Robot Class kan hjรคlpa till med uppladdning/nedladdning av filer nรคr du anvรคnder selenwebbdrivrutin
- Robot Class kan enkelt integreras med nuvarande automationsramverk (sรถkord, datadrivet eller hybrid)
Nackdelar med Robot Class
Robotramverket har nรฅgra nackdelar som nรคmns nedan:
- Nyckelord/mushรคndelse fungerar bara pรฅ nuvarande instans av Window. Anta t.ex. att en kod utfรถr en robotklasshรคndelse, och under kodexekveringen har anvรคndaren flyttat till nรฅgon annan skรคrm sรฅ kommer nyckelord/mushรคndelse att intrรคffa pรฅ den skรคrmen.
- De flesta metoder som mouseMove รคr skรคrmupplรถsningsberoende sรฅ det kan finnas en chans att kod som fungerar pรฅ en maskin kanske inte fungerar pรฅ en annan.
Sammanfattning
Robotklass i AWT-paketet anvรคnds fรถr att generera tangentbords-/mushรคndelser fรถr att interagera med OS-fรถnster och inbyggda appar.
Det primรคra syftet med Robot รคr att stรถdja inbyggnad av selenautomatiserade testprojekt Java plattform




