Robotklas in Selenium Webdriver

Wat is robotklasse in Selenium?

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

Waarom Robotklas?

Robotklasse wordt gebruikt in Selenium omdat gebruikers in bepaalde Selenium-automatiseringstests controle over het toetsenbord of de muis nodig hebben om met het besturingssysteem te kunnen communiceren windows zoals downloadpop-ups, printpop-ups, etc. en native applicaties zoals notitieblok, rekenmachine, etc. Selenium Webdriver kan deze pop-ups/applicaties niet verwerken, dus in Java versie 1.3 werd een robotklasse geïntroduceerd die pop-ups/applicaties van het besturingssysteem kan verwerken.

Documentatie over robotklassen

Het Documentatie over robotklassen in Selenium helpt gebruikers de basisdefinitie, syntaxis en gebruik te begrijpen van alle methoden en functies die beschikbaar zijn in de robotklasse in het Java AWT-pakket. Gebruikers kunnen de documentatie bekijken op de Officiële Oracle van de. Gebruikers kunnen de documentatie ook zelf op hun lokale computer aanmaken.

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: )

Documentatie over robotklassen

Stap 2) Pak de src-map uit en navigeer naar (pad tot 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 maplocatie in de map awt en typ 'javadoc *.java' zoals hieronder weergegeven

Documentatie over robotklassen

Wacht een tijdje totdat het systeem is verwerkt. Eenmaal voltooid, ziet u enkele HTML-bestanden in de map awt.

Stap 5) Open index.html

Documentatie over robotklassen

Stap 6) Hier vindt u de volledige documentatie van het awt-pakket. Klik in de linkernavigatiebalk op de hyperlink 'Robot' (zie 1 gemarkeerd in onderstaande afbeelding).

Documentatie over robotklassen

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

Robotklassemethoden in selenium en gebruik

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

Enkele veelgebruikte en populaire methoden van Robot Class tijdens webautomatisering:

Methode 1: toetsdruk():

robot.keyPress (KeyEvent.VK_DOWN): Deze methode met de pijl-omlaag van het toetsenbord

Methode 2: muisDruk():

robot.mousePress(InputEvent.BUTTON3_DOWN_MASK): Deze methode drukt met de rechtermuisknop op uw muis.

Methode 3: muisMove():

robot.mouseMove(point.getX(), point.getY()): Hiermee wordt de muisaanwijzer naar de opgegeven X- en Y-coördinaten verplaatst.

Methode 4: sleutelRelease():

robot.keyRelease (KeyEvent.VK_DOWN): Deze methode met de pijltjestoets omlaag van het toetsenbord

Methode 5: mouseRelease():

robot.mouseRelease(InputEvent.BUTTON3_DOWN_MASK): Met deze methode wordt de rechtermuisknop vrijgegeven

Voorbeeldcode om veelvoorkomende gebruiksscenario's te automatiseren met Robot Class

  • Laten we een voorbeeld nemen van de website http://spreadsheetpage.com/index.php/file/C35/P10/ waarin, nadat u op een webelement klikt (.//a[@href=contains(text(),'yearly-calendar.xls']) verschijnt er een pop-up voor het downloaden van het besturingssysteem.
  • Om dit aan te pakken gebruiken we de Robot-klasse (door bijvoorbeeld een exemplaar van Robot Class in uw code te maken Robotrobot = nieuwe Robot()). Robotklasse ons aanwezig in AWT-pakket van JDK.
Toetsenbordsleutel Methode
Om de pijl-omlaagtoets in te drukken wij gebruiken (robot.keyPress(KeyEvent.VK_DOWN))
Om op de TAB-toets te drukken wij gebruiken (robot.keyPress(KeyEvent.VK_TAB))
Om op de Enter-toets te drukken wij gebruiken (robot.keyPress(KeyEvent.VK_ENTER))

Voorbeeld van robotklasse in 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	
     }	 
 }

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 er nog een paar begrijpenplex methoden –

Stel dat u geen gebruik wilt maken van de klik methode voor het klikken op het webelement.

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.muisMove(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 gebruiken muisDruk als robot.mousePress(InputEvent.BUTTON1_DOWN_MASK) .

Stap 3) Na het indrukken moet de muis worden losgelaten. We kunnen gebruiken robot.mouseRelease(InputEvent.BUTTON1_DOWN_MASK) om de linkermuisklik vrij te geven.

Code uitvoeren met testNG:

Code uitvoeren met behulp van Testng vereist een grote afhankelijkheid van testNG of de bibliotheek waarnaar wordt verwezen van het TestNG jar-bestand.

TestNG maven-afhankelijkheid:

<dependency>	
  <groupId>org.testng</groupId>
  <artifactId>testng</artifactId>	
  <version>6.1.1</version>	
</dependency>

Na het toevoegen van maven-afhankelijkheid of jar-bestand. U moet Testannotatie van testNG importeren. Zodra alles klaar is, klikt u met de rechtermuisknop op de programmacode en klikt u op Uitvoeren als en vervolgens op TestNG... en u zult zien dat de uitvoering van de code begint met behulp van de testNG API.

Hier is de code

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	
    }	
}	

Bekijk deze video om hem in actie te zien

Voordelen van Robotklasse

  1. Robot Class kan toetsenbord- en muisgebeurtenissen simuleren
  2. Robot Class kan helpen bij het uploaden/downloaden van bestanden bij gebruik van de selenium-webdriver
  3. Robot Class kan eenvoudig worden geïntegreerd met het huidige automatiseringsframework (trefwoord, datagedreven of hybride)

Nadelen van robotklasse

Robotframework heeft enkele hieronder genoemde nadelen:

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

Samengevat

De robotklasse in het AWT-pakket wordt gebruikt om toetsenbord-/muisgebeurtenissen te genereren voor interactie met het besturingssysteem windows en native apps.

Het primaire doel van Robot is het ondersteunen van geautomatiseerde seleniumtestprojecten die op het Java-platform zijn gebouwd