Robotklas binnen Selenium Webstuurprogramma

Waar zit Robotklas in? Selenium?

Robotklasse in Selenium wordt gebruikt om geautomatiseerd testen voor implementaties van mogelijk te maken Java platform. 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 Selenium want zeker Selenium Bij automatiseringstests moeten gebruikers controle hebben over het toetsenbord en de muis om te kunnen communiceren met OS-vensters, zoals pop-ups voor downloaden en afdrukken, en met native applicaties zoals Kladblok en rekenmachine. 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

De 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 Java AWT-pakket. Gebruikers kunnen de documentatie bekijken op de Officiële Oracle website. 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 op Windows werkt, waardoor het geen goede optie is 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 behulp van TestNG

Nu u de basismethoden van Robot Class kent, gaan we een paar complexere methoden bespreken:

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 Testen vereist maven-afhankelijkheid van testNG of gerefereerde bibliotheek van 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 dependency of jar file. U moet Test annotation van testNG importeren. Zodra dit allemaal is gedaan, klikt u met de rechtermuisknop op de programmacode en klikt u op Run As en vervolgens op TestNG… en je zult zien dat de code zijn uitvoering start 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 web driver
  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.

Samenvatting

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

Het primaire doel van Robot is om de geautomatiseerde testprojecten van Selenium te ondersteunen Java platform