Robotklass i Selen Webdriver

Innehållsförteckning:

Anonim

Robotklass

Robotklass i selen används för att möjliggöra automatiserad testning för implementeringar av Java-plattformen. Det genererar inmatningshändelser i inbyggda system för testautomation, självkörande demos och andra applikationer där användare behöver kontroll över mus och tangentbord. Robotklassen är enkel att implementera och den kan enkelt integreras i ett automatiserat ramverk.

Varför robotklass?

Robotklass används i Selen eftersom användare i vissa Selen-automatiseringstester behöver kontroll över tangentbordet eller musen för att interagera med OS-fönster som nedladdnings-popup-fönster, popup-popup-fönster etc. och inbyggda applikationer som anteckningar, miniräknare etc. Selen Webdriver kan inte hantera dessa popup-fönster / applikationer, så i Java-version 1.3 introducerades robotklass som kan hantera OS-popup-fönster / applikationer.

I den här handledningen lär du dig,

  • Fördelar med robotklass
  • Dokumentation av robotklassen
  • Förstå interna metoder och användning av robotklassen
  • Hur man kör robotklasskod med testNG
  • Nackdelar med robotklass

Fördelar med robotklass

  1. Robotklass kan simulera tangentbord och mushändelse
  2. Robotklass kan hjälpa till att ladda upp / ladda ner filer när du använder selen-webbdrivrutin
  3. Robotklass kan enkelt integreras med nuvarande automatiseringsramverk (nyckelord, datadriven eller hybrid)

Vad är robotklassdokumentation?

Den Robot Class Dokumentation i selen hjälper användarna att förstå den grundläggande definitionen, syntax och användning av alla metoder och funktioner som finns i robot klass i Java AWT paketet. Användare kan se dokumentationen på den officiella Oracle-webbplatsen. Användare kan också skapa dokumentationen på sin lokala maskin själva.

Följ stegen nedan för att skapa dokumentationen på den lokala maskinen -

Steg 1) Du hittar src.zip-filen 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-mapp) / src / java / awt

Steg 3) Kopiera den aktuella platsen för mappen awt och öppna kommandotolken.

Steg 4) Ändra din nuvarande katalogplats till cmt i cmd och skriv 'javadoc * .java' enligt nedan.

Vänta ett tag tills systemet ska bearbetas, när det är klart ser du några HTML-filer i awt-mappen.

Steg 5) Öppna index.html

Steg 6) Här har du fullständig dokumentation för 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 robotklassen (se 2 markerade i bilden ovan).

Förstå interna metoder och användning av robotklassen

Robotklassmetoder kan användas för att interagera med tangentbord / mushändelser medan du gör webbläsarautomation. Alternativt kan AutoIT användas, men nackdelen ä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 webbautomation:

  • keyPress (): Exempel: robot.keyPress (KeyEvent.VK_DOWN): Denna metod med piltangenten nedåt på tangentbordet
  • mousePress (): Exempel : robot.mousePress (InputEvent.BUTTON3_DOWN_MASK): Denna metod kommer att trycka högerklicka på musen.
  • mouseMove (): Exempel : robot.mouseMove (point.getX (), point.getY ()): Detta flyttar muspekaren till de angivna X- och Y-koordinaterna.
  • keyRelease (): Exempel: robot.keyRelease (KeyEvent.VK_DOWN): Den här metoden med släpp ned piltangenten på tangentbordet
  • mouseRelease (): Exempel: robot.mouseRelease (InputEvent.BUTTON3_DOWN_MASK): Denna metod släpper musens högerklick

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 klickar på ett webbelement ( .//a[@href=contains(text(),'yearly- calendar.xls '] ) pop-up för OS-nedladdning visas.
  • För att hantera detta använder vi robotklass (genom att skapa en förekomst av robotklass i din kod, säg robotrobot = ny robot () ). Robotklass oss närvarande i AWT-paketet med JDK.
  • För att trycka på nedåtpil på tangentbordet använder vi ( robot.keyPress (KeyEvent.VK_DOWN))
  • För att trycka på TAB-tangenten på tangentbordet (vi använder robot.keyPress (KeyEvent.VK_TAB))
  • För att trycka på Enter-tangenten använder vi ( robot.keyPress (KeyEvent.VK_ENTER)).

Här är en exempelkod

importera java.awt.AWTException;importera java.awt.Robot;importera java.awt.event.KeyEvent;importera org.openqa.selenium.By;importera org.openqa.selenium.WebDriver;importera org.openqa.selenium.firefox.FirefoxDriver;klass Övning1 {public static void main (String [] args) kastar AWTException, InterruptedException {WebDriver-drivrutin = ny FirefoxDriver ();driver.get ("http://spreadsheetpage.com/index.php/file/C35/P10/"); // exempel urldriver.findElement (By.xpath (".// a [@ href = innehåller (text (), 'årskalender.xls')]")). klicka ();Robotrobot = ny robot (); // Robotklassen kastar AWT-undantagThread.sleep (2000); // Thread.sleep kastar InterruptedExceptionrobot.keyPress (KeyEvent.VK_DOWN); // tryck på pil ned på tangentbordet för att navigera och välj Spara alternativknappThread.sleep (2000); // sleep har bara använts för att visa upp varje händelse separatrobot.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);// tryck på Enter-tangenten på tangentbordet för att utföra över den valda åtgärden}} 

Kontrollera den här videon för att se den i aktion

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 -

Antag att du inte vill använda klickmetoden för att klicka på webbelementet.

I sådana fall kan du använda mouseMove-metoden i Robot-klassen.

Steg 1) mouseMove-metoden tar x- och y-koordinater som parametrar som robot.mouseMove (630, 420) där 630 anger x-axel och 420 anger y-axel. Så den här metoden flyttar din muspekare från den aktuella platsen till nämnda x- och y-skärningspunkt.

Steg 2) Därefter måste vi trycka på musknappen. Vi kan använda metoden mousePress som 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änsterklick på en mus.

Körkod med testNG:

Att köra kod med Testng kräver maven-beroende av testNG eller refererat bibliotek med TestNG jar-fil.

TestNG maven beroende:

 org.testng  testng  6.1.1  

Efter att ha lagt till maven-beroende eller jar-fil. Du måste importera testnotering av testNG. När allt är klart, högerklickar du bara på programkoden och klickar på Kör som och sedan på TestNG

... och du kommer att upptäcka att koden kommer att börja köras med testNG API.

Här är koden

importera java.awt.AWTException;importera java.awt.Robot;importera java.awt.event.InputEvent;importera java.awt.event.KeyEvent;importera org.openqa.selenium.WebDriver;importera org.openqa.selenium.firefox.FirefoxDriver;importera org.testng.annotations.Test;offentlig klass Excersise1 {@Testaoffentlig statisk ogiltig körning () kastar InterruptedException, AWTException {WebDriver-drivrutin = ny FirefoxDriver ();driver.manage (). fönster (). maximera ();driver.get ("http://spreadsheetpage.com/index.php/file/C35/P10/"); // exempel urlRobotrobot = ny robot ();robot.mouseMove (630, 420); // flytta muspunkten till en specifik platsrobot.fördröjning (1500); // fördröjning är att låta koden vänta på nämnda millisekunder innan nästa steg utförsrobot.mousePress (InputEvent.BUTTON1_DOWN_MASK); // tryck vänsterklickarobot.mouseRelease (InputEvent.BUTTON1_DOWN_MASK); // släpp vänsterklickrobot.fördröjning (1500);robot.keyPress (KeyEvent.VK_DOWN); // tryck på tangentbordets piltangent för att välja Spara alternativknappThread.sleep (2000);robot.keyPress (KeyEvent.VK_ENTER);// tryck på Enter-tangenten på tangentbordet för att utföra över den valda åtgärden}}

Kontrollera den här videon för att se den i aktion

Nackdelar med robotklass

Robotramverk har några nackdelar som nämns nedan:

  1. Nyckelord / mushändelse fungerar bara i nuvarande instans av Window. Antag att en kod utför vilken robotklasshändelse som helst, och under kodkörningen har användaren flyttat till någon annan skärm så kommer sökord / mushändelse att inträffa på den skärmen.
  2. De flesta av metoderna som mouseMove är beroende av skärmupplösning så det kan finnas en chans att kod som fungerar på en maskin kanske inte fungerar på en annan.

Sammanfattning

Robotklassen i AWT-paketet används för att generera tangentbord / mushändelser för att interagera med OS-fönster och inbyggda appar.

Det främsta syftet med Robot är att stödja selen automatiserade tester projektbyggande i Java-plattform

Den här artikeln har bidragit av Ramandeep Singh, som är testautomationsingenjör vid ett ledande MNC.