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 filen src.zip i JDK-mappen. Kopiera src.zip och extrahera detsamma i någon annan mapp eller katalog (säg D: eller E: )
Steg 2) Extrahera 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




