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: )
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
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
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).
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ů
- Robot Class může simulovat událost klávesnice a myši
- Robot Class může pomoci při nahrávání/stahování souborů při použití selenového webového ovladače
- 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:
- 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.
- 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