Robotklasse in Selenium Webdriver

Inhoudsopgave:

Anonim

Robotklasse

Robot Class in Selenium wordt gebruikt om geautomatiseerd testen mogelijk te maken voor implementaties van Java-platform. Het genereert invoergebeurtenissen in native systemen voor testautomatisering, zelfsturende demo's en andere toepassingen waarbij gebruikers controle over muis en toetsenbord nodig hebben. Robotklasse is eenvoudig te implementeren en kan eenvoudig worden geïntegreerd met een geautomatiseerd raamwerk.

Waarom Robot Class?

Robot Class wordt gebruikt in Selenium omdat gebruikers bij bepaalde Selenium-automatiseringstests controle over toetsenbord of muis nodig hebben om te communiceren met OS-vensters zoals downloadpop-ups, printpop-ups, enz. En native applicaties zoals kladblok, rekenmachine, enz. Selenium Webdriver kan deze pop-ups / applicaties niet aan, dus in Java versie 1.3 werd een robotklasse geïntroduceerd die OS-pop-ups / applicaties aankan.

In deze tutorial leer je,

  • Voordelen van Robot Class
  • Documentatie van Robot Class
  • Inzicht in de interne methoden en het gebruik van Robot Class
  • Hoe robotklasse-code uit te voeren met testNG
  • Nadelen van robotklasse

Voordelen van Robot Class

  1. Robot Class kan toetsenbord- en muisgebeurtenis simuleren
  2. Robot Class kan helpen bij het uploaden / downloaden van bestanden bij gebruik van selenium-webstuurprogramma
  3. Robot Class kan eenvoudig worden geïntegreerd met het huidige automatiseringsraamwerk (trefwoord, datagestuurd of hybride)

Wat is documentatie over robotklassen?

De Robot Class-documentatie in Selenium helpt gebruikers de basisdefinitie, syntaxis en het gebruik van alle methoden en functies die beschikbaar zijn in de robotklasse in het Java AWT-pakket te begrijpen. Gebruikers kunnen de documentatie bekijken op de officiële Oracle-website. Gebruikers kunnen de documentatie ook zelf op hun lokale computer maken.

Volg de onderstaande stappen om de documentatie op een lokale computer te maken:

Stap 1) U vindt het bestand src.zip in de JDK-map. Kopieer src.zip en pak hetzelfde uit in een andere map of directory (zeg D: of E:)

Stap 2) Pak de src-map uit en navigeer naar (pad naar de src-map) / src / java / awt

Stap 3) Kopieer de huidige locatie van de awt-map en open de opdrachtprompt.

Stap 4) Wijzig in cmd uw huidige directorylocatie naar de awt-map en typ 'javadoc * .java' zoals hieronder weergegeven

Wacht even totdat het systeem is verwerkt. Als het eenmaal is voltooid, ziet u enkele HTML-bestanden in de awt-map.

Stap 5) Open index.html

Stap 6) Hier heb je de volledige documentatie van het awt-pakket, klik in de linkernavigatiebalk op de hyperlink 'Robot' (zie 1 gemarkeerd in onderstaande afbeelding).

Hier kun je ook alle methoden en interfaces van Robot Class zien (zie 2 gemarkeerd in bovenstaande afbeelding).

Inzicht in de interne methoden en het gebruik van Robot Class

Robot Class-methoden kunnen worden gebruikt om te communiceren met toetsenbord- / muisgebeurtenissen tijdens het automatiseren van de browser. Als alternatief kan AutoIT worden gebruikt, maar het nadeel is dat het een uitvoerbaar bestand (exe) genereert dat alleen op Windows werkt, dus het is geen goede optie om te gebruiken.

Enkele veelgebruikte en populaire methoden van Robot Class tijdens webautomatisering:

  • keyPress (): Voorbeeld: robot.keyPress (KeyEvent.VK_DOWN): Deze methode met de pijl-omlaagtoets van het toetsenbord
  • mousePress (): Voorbeeld : robot.mousePress (InputEvent.BUTTON3_DOWN_MASK): Deze methode zal met de rechtermuisknop op uw muis drukken.
  • mouseMove (): Voorbeeld : robot.mouseMove (point.getX (), point.getY ()): Dit zal de muisaanwijzer verplaatsen naar de gespecificeerde X- en Y-coördinaten.
  • keyRelease (): Voorbeeld: robot.keyRelease (KeyEvent.VK_DOWN): deze methode met de pijltoets omlaag loslaten van het toetsenbord
  • mouseRelease (): Voorbeeld: robot.mouseRelease (InputEvent.BUTTON3_DOWN_MASK): Deze methode zal de rechterklik van uw muis vrijgeven

Voorbeeldcode om veelvoorkomende gebruiksscenario's te automatiseren met behulp van Robot Class

  • Laten we een voorbeeld nemen van een website http://spreadsheetpage.com/index.php/file/C35/P10/ waarin nadat u op een webelement hebt geklikt ( .//a[@href=contains(text(),'yearly- calendar.xls '] ) verschijnt een OS-downloadpop-up.
  • Om dit af te handelen gebruiken we Robot class (door een instantie van Robot Class aan te maken in uw code, zeg Robot robot = new Robot () ). Robotklasse ons aanwezig in AWT-pakket van JDK.
  • Om op de pijl-omlaag van het toetsenbord te drukken, gebruiken we ( robot.keyPress (KeyEvent.VK_DOWN))
  • Om op de TAB-toets van het toetsenbord te drukken (we gebruiken robot.keyPress (KeyEvent.VK_TAB))
  • Om op de Enter-toets te drukken, gebruiken we ( robot.keyPress (KeyEvent.VK_ENTER)).

Hier is een voorbeeldcode

importeer java.awt.AWTException;importeer java.awt.Robot;importeer java.awt.event.KeyEvent;import org.openqa.selenium.By;importeer org.openqa.selenium.WebDriver;importeer org.openqa.selenium.firefox.FirefoxDriver;les Oefening1 {public static void main (String [] args) gooit AWTException, InterruptedException {WebDriver-stuurprogramma = nieuwe FirefoxDriver ();driver.get ("http://spreadsheetpage.com/index.php/file/C35/P10/"); // voorbeeld-urldriver.findElement (By.xpath (".// a [@ href = bevat (text (), 'jaarkalender.xls')]")). click ();Robotrobot = nieuwe robot (); // Robotklasse gooit AWT-uitzonderingThread.sleep (2000); // Thread.sleep gooit InterruptedExceptionrobot.keyPress (KeyEvent.VK_DOWN); // druk op de pijl-omlaagtoets van het toetsenbord om te navigeren en selecteer het keuzerondje OpslaanThread.sleep (2000); // sleep is alleen gebruikt om elk evenement afzonderlijk te laten zienrobot.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);// druk op de enter-toets van het toetsenbord om de bovenstaande geselecteerde actie uit te voeren​​ 

Bekijk deze video om hem in actie te zien

Hoe Robot Class-code uit te voeren met TestNG

Omdat je nu op de hoogte bent van de basismethoden van Robot Class, laten we dus enkele complexere methoden begrijpen -

Stel dat u niet wilt gebruiken klik methode voor het klikken op web element.

In dergelijke gevallen kunt u de mouseMove-methode van de Robot-klasse gebruiken.

Stap 1) mouseMove-methode neemt x- en y-coördinaten als parameters zoals robot.mouseMove (630, 420) waarbij 630 de x-as aangeeft en 420 de y-as aangeeft. Deze methode verplaatst dus uw muisaanwijzer van de huidige locatie naar het genoemde x- en y-snijpunt.

Stap 2) Vervolgens moeten we op de muisknop drukken. We kunnen de methode mousePress gebruiken zoals robot.mousePress (InputEvent.BUTTON1_DOWN_MASK) .

Stap 3) Na het drukken moet de muis worden losgelaten. We kunnen robot.mouseRelease (InputEvent.BUTTON1_DOWN_MASK ) gebruiken om de linkermuisknop los te laten.

Code uitvoeren met testNG:

Voor het uitvoeren van code met Testng is de maven-afhankelijkheid van testNG of de bibliotheek van het TestNG-jar-bestand waarnaar wordt verwezen, vereist.

TestNG maven-afhankelijkheid:

 org.testng  testng  6.1.1  

Na het toevoegen van maven-afhankelijkheid of jar-bestand. U moet de testannotatie van testNG importeren. Als alles klaar is, klikt u met de rechtermuisknop op de programmacode en klikt u op Uitvoeren als en vervolgens op TestNG

... en je zult zien dat de code zal beginnen met de uitvoering ervan met behulp van de testNG API.

Hier is de code

importeer java.awt.AWTException;importeer java.awt.Robot;importeer java.awt.event.InputEvent;importeer java.awt.event.KeyEvent;importeer org.openqa.selenium.WebDriver;importeer org.openqa.selenium.firefox.FirefoxDriver;importeer org.testng.annotations.Test;openbare les Excersise1 {@Testopenbare statische ongeldige uitvoering () gooit InterruptedException, AWTException {WebDriver-stuurprogramma = nieuwe FirefoxDriver ();driver.manage (). window (). maximaliseren ();driver.get ("http://spreadsheetpage.com/index.php/file/C35/P10/"); // voorbeeld-urlRobotrobot = nieuwe robot ();robot.mouseMove (630, 420); // verplaats muispunt naar een specifieke locatierobot.vertraging (1500); // delay is om de code de genoemde milliseconden te laten wachten voordat de volgende stap wordt uitgevoerdrobot.mousePress (InputEvent.BUTTON1_DOWN_MASK); // druk op de linkermuisknoprobot.mouseRelease (InputEvent.BUTTON1_DOWN_MASK); // laat de linkermuisknop losrobot.vertraging (1500);robot.keyPress (KeyEvent.VK_DOWN); // druk op de pijltjestoets op het toetsenbord om het keuzerondje Opslaan te selecterenThread.sleep (2000);robot.keyPress (KeyEvent.VK_ENTER);// druk op de enter-toets van het toetsenbord om de bovenstaande geselecteerde actie uit te voeren​​

Bekijk deze video om hem in actie te zien

Nadelen van Robot Class

Robot framwork heeft enkele nadelen die hieronder worden genoemd:

  1. De trefwoord / muisgebeurtenis werkt alleen op het huidige exemplaar van Window. Stel dat een code een robotklasse-gebeurtenis uitvoert, en tijdens de uitvoering van de code is de gebruiker naar een ander scherm gegaan, dan zal de trefwoord- / muisgebeurtenis op dat scherm plaatsvinden.
  2. De meeste methoden, zoals mouseMove, zijn afhankelijk van de schermresolutie, dus er is een kans dat de code die op de ene machine werkt, niet op de andere werkt.

Overzicht

Robotklasse in AWT-pakket wordt gebruikt om toetsenbord- / muisgebeurtenissen te genereren voor interactie met OS-vensters en native apps.

Het primaire doel van Robot is om selenium-geautomatiseerde testprojecten te ondersteunen die op een Java-platform zijn gebouwd

Dit artikel is bijgedragen door Ramandeep Singh, een ingenieur testautomatisering bij een toonaangevend MNC.