Robottiluokka sisään Selenium Web-ohjain

Mitä robottiluokka sisältää Selenium?

Robottiluokka in Selenium käytetään mahdollistamaan toteutusten automaattinen testaus Java alusta. Se luo syöttötapahtumia alkuperäisissä järjestelmissä testausautomaatiota, itsetoimivia demoja ja muita sovelluksia varten, joissa käyttäjät tarvitsevat hiiren ja näppäimistön hallintaa. Robottiluokka on helppo toteuttaa ja se voidaan helposti integroida automatisoituun kehykseen.

Miksi robottiluokka?

Robottiluokka käytetään Selenium koska tietyllä tavalla Selenium automaatiotestien avulla käyttäjät tarvitsevat näppäimistön tai hiiren hallinnan voidakseen olla vuorovaikutuksessa käyttöjärjestelmän ikkunoiden, kuten latausten ponnahdusikkunoiden, tulostusponnahdusikkunoiden jne., sekä alkuperäisten sovellusten, kuten muistilehtiön, laskimen jne., kanssa. Selenium Webdriver ei voi käsitellä näitä ponnahdusikkunoita/sovelluksia, joten sisään Java versio 1.3, otettiin käyttöön robottiluokka, joka pystyy käsittelemään käyttöjärjestelmän ponnahdusikkunoita/sovelluksia.

Robottiluokan dokumentaatio

- Robottiluokan dokumentaatio in Selenium auttaa käyttäjiä ymmärtämään robottiluokan kaikkien menetelmien ja toimintojen perusmäärittelyn, syntaksin ja käytön Java AWT paketti. Käyttäjät voivat tarkastella asiakirjoja osoitteessa Virkamies Oracle verkkosivusto. Käyttäjät voivat myös itse luoda dokumentaation paikalliselle koneelleen.

Luo dokumentaatio paikallisella koneella seuraavasti:

Vaihe 1) Löydät src.zip-tiedoston JDK-kansiosta. Kopioi src.zip ja pura se johonkin toiseen kansioon tai hakemistoon (sanotaan D: tai E: )

Robottiluokan dokumentaatio

Vaihe 2) Pura src-kansio ja siirry kohtaan (polku src-kansioon)/src/java/awt

Vaihe 3) Kopioi awt-kansion nykyinen sijainti ja avaa komentokehote.

Vaihe 4) Muuta cmd:ssä nykyinen hakemistosi sijainti awt-kansioon ja kirjoita "javadoc *.java" alla olevan kuvan mukaisesti.

Robottiluokan dokumentaatio

Odota hetki, kunnes järjestelmä käsittelee, kun se on valmis, näet muutaman HTML-tiedoston awt-kansiossa.

Vaihe 5) Avaa index.html

Robottiluokan dokumentaatio

Vaihe 6) Tässä on täydellinen dokumentaatio awt-paketista, napsauta vasemmasta navigointipalkista "Robotti"-hyperlinkkiä (katso 1 merkitty alla olevaan kuvaan).

Robottiluokan dokumentaatio

Täältä näet myös kaikki robottiluokan menetelmät ja rajapinnat (katso 2 merkittynä yllä olevaan kuvaan).

Robottiluokan menetelmät Selenium ja käyttö

Robot Class menetelmiä voidaan käyttää vuorovaikutukseen näppäimistön/hiiritapahtumien kanssa samalla kun selainautomaatio tehdään. Vaihtoehtoisesti AutoIT voidaan käyttää, mutta sen haittapuoli on, että se luo suoritettavan tiedoston (exe), joka toimii vain Windowsissa, joten se ei ole hyvä vaihtoehto käyttää.

Joitakin yleisesti käytettyjä robottiluokan menetelmiä web-automaation aikana:

Tapa 1: KeyPress():

robot.keyPress(KeyEvent.VK_DOWN): Tämä menetelmä näppäimistön alanuolinäppäimellä

Tapa 2: MousePress():

robot.mousePress(InputEvent.BUTTON3_DOWN_MASK): Tämä menetelmä painaa hiiren oikeaa painiketta.

Tapa 3: mouseMove():

robot.mouseMove(point.getX(), point.getY()): Tämä siirtää hiiren osoittimen määritettyihin X- ja Y-koordinaatteihin.

Tapa 4: keyRelease():

robot.keyRelease(KeyEvent.VK_DOWN): Tämä menetelmä näppäimistön vapauttamalla alanuolinäppäimellä

Tapa 5: mouseRelease():

robot.mouseRelease(InputEvent.BUTTON3_DOWN_MASK): Tämä menetelmä vapauttaa hiiren kakkospainikkeen

Esimerkkikoodi yleisten käyttötapausten automatisoimiseksi robottiluokan avulla

  • Otetaan esimerkki web-sivustosta http://spreadsheetpage.com/index.php/file/C35/P10/, jossa verkkoelementin napsautuksen jälkeen (.//a[@href=contains(text(),'yearly-calendar.xls']) näyttöön tulee käyttöjärjestelmän latausponnahdusikkuna.
  • Tämän käsittelemiseksi käytämme Robot-luokkaa (luomalla Robot Class -esiintymän koodiisi, sano Robottirobotti = uusi robotti()) . Robottiluokka esittelee meidät JDK:n AWT-paketissa.
Näppäimistö Menetelmä
Paina alanuolinäppäintä käytämme (robot.keyPress(KeyEvent.VK_DOWN))
Paina TAB-näppäintä käytämme (robot.keyPress(KeyEvent.VK_TAB))
Paina Enter-näppäintä käytämme (robot.keyPress(KeyEvent.VK_ENTER))

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

Katso tämä video nähdäksesi sen toiminnassa

Kuinka suorittaa robottiluokan koodi käyttämällä TestNG

Koska olet nyt tietoinen robottiluokan perusmenetelmistä, niin ymmärrämme muutama monimutkaisempi menetelmä -

Oletetaan, että et halua käyttää napsauta menetelmää web-elementin napsauttamiseksi.

Tällaisissa tapauksissa voit käyttää Robot-luokan mouseMove-metodia.

Vaihe 1) mouseMove-menetelmä ottaa x- ja y-koordinaatit parametreina, kuten robot.mouseMove(630, 420) jossa 630 tarkoittaa x-akselia ja 420 osoittaa y-akselia. Joten tämä menetelmä siirtää hiiren osoittimen nykyisestä sijainnista mainittuun x- ja y-leikkauspisteeseen.

Vaihe 2) Seuraavaksi meidän on painettava hiiren painiketta. Voimme käyttää menetelmää hiiriPaina pitää robot.mousePress(InputEvent.BUTTON1_DOWN_MASK) .

Vaihe 3) Painamisen jälkeen hiiri on vapautettava. Voimme käyttää robot.mouseRelease(InputEvent.BUTTON1_DOWN_MASK) vapauttaaksesi hiiren vasemman painikkeen.

Koodin suorittaminen testNG:llä:

Ajokoodi käyttämällä Testng vaatii maven riippuvuuden testNG:stä tai referoidusta kirjastosta TestNG jar tiedosto.

TestNG hirveä riippuvuus:

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

Maven-riippuvuuden tai jar-tiedoston lisäämisen jälkeen. Sinun on tuotava testNG:n testimerkintä. Kun kaikki on tehty, napsauta hiiren kakkospainikkeella ohjelmakoodia ja napsauta Suorita kuten ja napsauta sitten TestNG… ja huomaat, että koodi alkaa suorittaa sen testNG API:lla.

Tässä on koodi

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

Katso tämä video nähdäksesi sen toiminnassa

Robottiluokan edut

  1. Robot Class voi simuloida näppäimistö- ja hiiritapahtumaa
  2. Robot Class voi auttaa tiedostojen lataamisessa käytettäessä seleeniverkkoajuria
  3. Robot Class voidaan helposti integroida nykyiseen automaatiokehykseen (avainsana, dataohjattu tai hybridi)

Robottiluokan haitat

Robottirungolla on muutamia alla mainittuja haittoja:

  1. Avainsana-/hiiritapahtuma toimii vain nykyisessä ikkunan esiintymässä. Esim. oletetaan, että koodi suorittaa minkä tahansa robottiluokan tapahtuman ja koodin suorittamisen aikana käyttäjä on siirtynyt jollekin muulle näytölle, niin avainsana/hiiri-tapahtuma tapahtuu kyseisellä näytöllä.
  2. Suurin osa menetelmistä, kuten mouseMove, on riippuvainen näytön resoluutiosta, joten voi olla mahdollista, että yhdellä koneella toimiva koodi ei ehkä toimi toisessa.

Yhteenveto

AWT-paketin robottiluokkaa käytetään näppäimistö-/hiiritapahtumien luomiseen käyttöjärjestelmän ikkunoiden ja alkuperäisten sovellusten kanssa.

Robotin ensisijainen tarkoitus on tukea seleeniautomaattisten testien projektien sisäänrakennettua Java foorumi