Třída robotů v Selenium Webdriver

V čem je třída robotů Selenium?

Třída robotů in Selenium se používá k umožnění automatizovaného testování implementací Java platforma. Generuje vstupní události v nativních systémech pro automatizaci testování, samospouštěcí ukázky a další aplikace, kde uživatelé potřebují ovládat myš a klávesnici. Třída robotů se snadno implementuje a lze ji snadno integrovat do automatizovaného rámce.

Proč třída robotů?

Třída robotů je používán v Selenium protože zajisté Selenium automatizační testy potřebují uživatelé ovládat klávesnici nebo myš, aby mohli pracovat s okny OS, jako jsou vyskakovací okna pro stahování, tisk vyskakovacích oken atd., a nativními aplikacemi, jako je poznámkový blok, kalkulačka atd. Selenium Webdriver nedokáže zpracovat tato vyskakovací okna/aplikace, takže in Java verze 1.3 byla představena třída robotů, která zvládne vyskakovací okna/aplikace OS.

Dokumentace třídy robotů

Jedno Dokumentace třídy robotů in Selenium pomáhá uživatelům porozumět základní definici, syntaxi a použití všech metod a funkcí dostupných ve třídě robotů v Java balíček AWT. Uživatelé mohou prohlížet dokumentaci na Oficiální Oracle webových stránkách . Uživatelé mohou také sami vytvořit dokumentaci na svém místním počítači.

Chcete-li vytvořit dokumentaci na místním počítači, postupujte podle následujících kroků -

Krok 1) Soubor src.zip najdete ve složce JDK. Zkopírujte soubor src.zip a rozbalte jej do jiné složky nebo adresáře (řekněme D: nebo E: )

Dokumentace třídy robotů

Krok 2) Extrahujte složku src a přejděte do (cesta do složky src)/src/java/awt

Krok 3) Zkopírujte aktuální umístění složky awt a otevřete příkazový řádek.

Krok 4) V cmd změňte aktuální umístění adresáře na složku awt a zadejte 'javadoc *.java', jak je uvedeno níže

Dokumentace třídy robotů

Počkejte chvíli, než systém zpracuje, po dokončení uvidíte ve složce awt několik HTML souborů.

Krok 5) Otevřete index.html

Dokumentace třídy robotů

Krok 6) Zde máte úplnou dokumentaci balíčku awt, v levém navigačním panelu klikněte na hypertextový odkaz 'Robot' (viz 1 označený na obrázku níže).

Dokumentace třídy robotů

Zde také můžete vidět všechny metody a rozhraní třídy robotů (viz 2 označená na obrázku výše).

Metody třídy robotů v Selenium a využití

Metody Robot Class lze použít k interakci s událostmi klávesnice/myši při automatizaci prohlížeče. Alternativně AutoIT lze použít, ale jeho nevýhodou je, že generuje spustitelný soubor (exe), který bude fungovat pouze na Windows, takže to není dobrá volba.

Některé běžně a oblíbené metody třídy Robot Class během automatizace webu:

Metoda 1: KeyPress():

robot.keyPress(KeyEvent.VK_DOWN): Tato metoda se stisknutím klávesy se šipkou dolů na klávesnici

Metoda 2: mousePress():

robot.mousePress(InputEvent.BUTTON3_DOWN_MASK): Tato metoda stiskne pravé kliknutí myši.

Metoda 3: mouseMove():

robot.mouseMove(point.getX(), point.getY()): Toto přesune ukazatel myši na zadané souřadnice X a Y.

Metoda 4: keyRelease():

robot.keyRelease(KeyEvent.VK_DOWN): Tato metoda s uvolněním klávesy se šipkou dolů na klávesnici

Metoda 5: mouseRelease():

robot.mouseRelease(InputEvent.BUTTON3_DOWN_MASK): Tato metoda uvolní kliknutí pravým tlačítkem myši

Ukázkový kód pro automatizaci běžných případů použití pomocí třídy Robot

  • Vezměme si příklad webové stránky http://spreadsheetpage.com/index.php/file/C35/P10/, kde po kliknutí na webový prvek (.//a[@href=contains(text(),'yearly-calendar.xls']) zobrazí se vyskakovací okno pro stažení OS.
  • Abychom to zvládli, používáme třídu Robot (vytvořením instance třídy Robot ve vašem kódu řekněme Robot robot = nový robot()). Třída robotů nás prezentuje v AWT balíčku JDK.
Klávesnice Metoda
Chcete-li stisknout šipku dolů používáme (robot.keyPress(KeyEvent.VK_DOWN))
Chcete-li stisknout klávesu TAB používáme (robot.keyPress(KeyEvent.VK_TAB))
Chcete-li stisknout klávesu Enter používáme (robot.keyPress(KeyEvent.VK_ENTER))

Příklad třídy robotů v 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	
     }	 
 }

Podívejte se na toto video a uvidíte to v akci

Jak spustit kód třídy robotů pomocí TestNG

Protože jste si nyní vědomi základních metod třídy robotů, pojďme pochopit několik složitějších metod –

Předpokládejme, že nechcete používat klikací metoda pro kliknutí na prvek webu.

V takových případech můžete použít metodu mouseMove třídy Robot.

Krok 1) Metoda mouseMove bere souřadnice x a y jako parametry robot.mouseMove(630, 420) kde 630 označuje osu x a 420 označuje osu y. Tato metoda tedy přesune ukazatel myši z aktuálního umístění na zmíněný průsečík x a y.

Krok 2) Dále musíme stisknout tlačítko myši. Můžeme použít metodu mousePress jako robot.mousePress(InputEvent.BUTTON1_DOWN_MASK) .

Krok 3) Po stisknutí je třeba myš uvolnit. Můžeme použít robot.mouseRelease(InputEvent.BUTTON1_DOWN_MASK), abyste uvolnili kliknutí levým tlačítkem myši.

Spuštění kódu pomocí testNG:

Spuštění kódu pomocí Testng vyžaduje maven závislost testNG nebo odkazované knihovny TestNG jar soubor.

TestNG závislost na mavenovi:

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

Po přidání závislosti maven nebo souboru jar. Musíte importovat testovací anotaci testNG. Jakmile je vše hotovo, klikněte pravým tlačítkem na kód programu a klikněte na Spustit jako a poté klikněte na TestNG… a zjistíte, že kód se spustí pomocí testNG API.

Zde je kód

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

Podívejte se na toto video a uvidíte to v akci

Výhody třídy robotů

  1. Robot Class může simulovat událost klávesnice a myši
  2. Robot Class může pomoci při nahrávání/stahování souborů při použití selenového webového ovladače
  3. Robot Class lze snadno integrovat se současným automatizačním rámcem (klíčovým slovem, daty nebo hybridní)

Nevýhody třídy robotů

Rám robota má několik níže uvedených nevýhod:

  1. Událost klíčové slovo/myš bude fungovat pouze na aktuální instanci okna. Předpokládejme například, že kód provádí jakoukoli událost třídy robota a během provádění kódu se uživatel přesunul na jinou obrazovku, pak na této obrazovce dojde k události klíčového slova/myši.
  2. Většina metod, jako je mouseMove, je závislá na rozlišení obrazovky, takže může existovat možnost, že kód fungující na jednom počítači nemusí fungovat na jiném.

Shrnutí

Třída robota v balíčku AWT se používá ke generování událostí klávesnice/myši pro interakci s okny OS a nativními aplikacemi.

Primárním účelem Robota je podporovat vestavěný projekt automatizovaných testů selenu Java platforma