Robotklasse i Selenium Webdriver
Hva er Robot Class i Selenium?
Robotklasse in Selenium brukes til å aktivere automatisert testing for implementeringer av Java plattform. Den genererer inngangshendelser i native systemer for testautomatisering, selvkjørende demoer og andre applikasjoner der brukere trenger kontroll over mus og tastatur. Robotklassen er enkel å implementere og den kan enkelt integreres med et automatisert rammeverk.
Hvorfor robotklasse?
Robotklasse brukes i Selenium fordi, i visse Selenium automatiseringstester, brukere trenger kontroll over tastatur eller mus for å samhandle med OS-vinduer som nedlasting av popup-vinduer, print popup-vinduer osv. og native applikasjoner som notisblokk, kalkulator osv. Selenium Webdriver kan ikke håndtere disse popup-vinduene/applikasjonene, så inn Java versjon 1.3, robotklasse ble introdusert som kan håndtere OS pop-ups/applikasjoner.
Robotklassedokumentasjon
Ocuco Robotklassedokumentasjon in Selenium hjelper brukere å forstå den grunnleggende definisjonen, syntaksen og bruken av alle metodene og funksjonene som er tilgjengelige i robotklassen i Java AWT-pakke. Brukere kan se dokumentasjonen på Offisielt Oracle nettsted. Brukere kan også lage dokumentasjonen på sin lokale maskin selv.
For å lage dokumentasjonen på lokal maskin, følg trinnene nedenfor-
Trinn 1) Du finner filen src.zip i JDK-mappen. Kopier src.zip og pakk ut det samme i en annen mappe eller katalog (si D: eller E: )
Trinn 2) Pakk ut src-mappen og naviger til (bane til src-mappen)/src/java/awt
Trinn 3) Kopier gjeldende plassering av awt-mappen og åpne ledeteksten.
Trinn 4) I cmd, endre din nåværende katalogplassering til awt-mappen og skriv 'javadoc *.java' som vist nedenfor
Vent en stund til systemet skal behandle, når du er ferdig vil du se noen HTML-filer i awt-mappen.
Trinn 5) Åpne index.html
Trinn 6) Her har du full dokumentasjon av awt-pakken, fra venstre navigasjonslinje klikker du på 'Robot' hyperkobling (se 1 merket i bildet nedenfor).
Her kan du også se alle metodene og grensesnittene til Robot Class (Se 2 merket i bildet ovenfor).
Robotklassemetoder i Selenium og bruk
Robot Class-metoder kan brukes til å samhandle med tastatur-/mushendelser mens du utfører nettleserautomatisering. Alternativt AutoIT kan brukes, men ulempen er at den genererer en kjørbar fil (exe) som bare fungerer på Windows, så det er ikke et godt alternativ å bruke.
Noen vanlige og populære metoder for Robot Class under webautomatisering:
Metode 1: tastetrykk():
robot.keyPress(KeyEvent.VK_DOWN): Denne metoden med trykk ned piltasten på tastaturet
Metode 2: musetrykk():
robot.mousePress(InputEvent.BUTTON3_DOWN_MASK): Denne metoden vil trykke med høyre museklikk.
Metode 3: mouseMove():
robot.mouseMove(point.getX(), point.getY()): Dette vil flytte musepekeren til de angitte X- og Y-koordinatene.
Metode 4: keyRelease():
robot.keyRelease(KeyEvent.VK_DOWN): Denne metoden med slipp ned piltast på tastaturet
Metode 5: mouseRelease():
robot.mouseRelease(InputEvent.BUTTON3_DOWN_MASK): Denne metoden vil slippe høyreklikk på musen din
Eksempelkode for å automatisere vanlige brukstilfeller ved hjelp av Robot Class
- La oss ta et eksempel på nettstedet http://spreadsheetpage.com/index.php/file/C35/P10/ hvor du klikker på et webelement (
.//a[@href=contains(text(),'yearly-calendar.xls']
) et popup-vindu for nedlasting av OS vises.
- For å håndtere dette bruker vi Robot-klassen (ved å lage en forekomst av Robot Class i koden din Robotrobot = ny robot()). Robotklasse oss tilstede i AWT-pakken til JDK.
Tastaturnøkkel | Metode |
---|---|
For å trykke ned piltasten | vi bruker (robot.keyPress(KeyEvent.VK_DOWN)) |
For å trykke TAB-tasten | vi bruker (robot.keyPress(KeyEvent.VK_TAB)) |
For å trykke Enter-tasten | vi bruker (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 } }
Sjekk denne videoen for å se den i aksjon
Hvordan kjøre Robot Class-kode ved hjelp av TestNG
Siden, nå er du klar over grunnleggende metoder for Robot Class, så la oss forstå noen mer komplekse metoder –
Anta at du ikke vil bruke klikkmetode for å klikke på webelement.
I slike tilfeller kan du bruke mouseMove-metoden fra Robot-klassen.
Trinn 1) mouseMove-metoden tar x- og y-koordinater som parametere som robot.mouseMove(630, 420) hvor 630 indikerer x-aksen og 420 indikerer y-aksen. Så, denne metoden vil flytte musepekeren fra gjeldende plassering til nevnte x og y skjæringspunkt.
Trinn 2) Deretter må vi trykke på museknappen. Vi kan bruke metoden musetrykk i likhet med robot.mousePress(InputEvent.BUTTON1_DOWN_MASK) .
Trinn 3) Etter trykk må musen slippes. Vi kan bruke robot.mouseRelease(InputEvent.BUTTON1_DOWN_MASK) for å slippe venstre museklikk.
Kjører kode ved hjelp av testNG:
Kjører kode ved hjelp av Testng krever maven avhengighet av testNG eller referert bibliotek av TestNG jar-fil.
TestNG maven avhengighet:
<dependency> <groupId>org.testng</groupId> <artifactId>testng</artifactId> <version>6.1.1</version> </dependency>
Etter å ha lagt til maven avhengighet eller jar-fil. Du må importere testannotering av testNG. Når alt er gjort, er det bare å høyreklikke på programkoden og klikke på Kjør som og deretter klikke på TestNG... og du vil finne at koden vil starte sin kjøring ved hjelp av 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 } }
Sjekk denne videoen for å se den i aksjon
Fordeler med Robot Class
- Robot Class kan simulere tastatur- og mushendelse
- Robot Class kan hjelpe med opplasting/nedlasting av filer ved bruk av selen nettdriver
- Robot Class kan enkelt integreres med dagens automatiseringsrammeverk (søkeord, datadrevet eller hybrid)
Ulemper med Robot Class
Robotrammeverket har få ulemper nevnt nedenfor:
- Nøkkelord/musehendelse vil bare fungere på gjeldende forekomst av Window. Anta for eksempel at en kode utfører en robotklassehendelse, og under kjøringen av koden har brukeren flyttet til en annen skjerm, så vil nøkkelord/musehendelse oppstå på den skjermen.
- De fleste metodene som mouseMove er skjermoppløsningsavhengige, så det kan være en sjanse for at kode som fungerer på en maskin kanskje ikke fungerer på en annen.
Sammendrag
Robotklasse i AWT-pakken brukes til å generere tastatur-/mushendelser for å samhandle med OS-vinduer og native apper.
Hovedformålet med Robot er å støtte innbygging av selenautomatiserte testprosjekter Java plattform