robot class selenium webdriver with java
Tento kurz vysvětluje použití, příklady a funkce třídy robotů v Javě a její integraci se selenovým rámcem:
Robot Java je a Robot třída v Jáva Balíček AWT. Obvykle se používá k simulaci operací klávesnice a myši v reálném čase, které provádíme ručně.
Hlavním účelem třídy robotů v Javě je automatizace. Krása je v tom, že jej lze snadno integrovat do současného automatizačního rámce a zvýšit tak jeho dosah.
Co se naučíte:
Robot Class v Javě
V tomto tutoriálu se dozvíme o integraci selenu s Robot Class v Javě, ale obecně lze Java Robot Class použít v jakémkoli automatizačním rámci postaveném na Javě.
Simulace funkcí třídy robotů
Existuje mnoho funkcí třídy robotů v Javě, níže jsou uvedeny některé známé metody s nimi spojené:
# 1) Funkce klávesnice
Klávesové funkce třídy Robot se obecně zabývají simulací různých kláves dostupných na klávesnicích a jejich operací.
Public void keyPress (int keycode)
Tato funkce stiskne klávesu vstupního parametru. K dokončení operace by měla být použita metoda uvolnění klíče.
Postupujte podle níže uvedeného fragmentu kódu:
r.keyPress(KeyEvent.VK_CONTROL); r.keyPress(KeyEvent.VK_V);
Tady ve výše uvedeném fragmentu kódu právě stiskneme CTRL + V. Metoda KeyEvent je spojena s dalšími klávesami dostupnými pro naši klávesnici. Jeden může vyzkoušet všechny.
Public void keyRelease (int keycode)
Tato metoda uvolňuje klíč vstupního parametru. Jedná se o post-operaci metody stisknutí klávesy.
Postupujte podle níže uvedeného fragmentu kódu:
r.keyRelease(KeyEvent.VK_V); r.keyRelease(KeyEvent.VK_CONTROL);
Tady ve výše uvedeném fragmentu kódu právě uvolňujeme CTRL + V. Podobně, jak je uvedeno výše, je metoda KeyEvent také spojena s dalšími klávesami dostupnými pro naši klávesnici. Jeden může vyzkoušet všechny.
# 2) Funkce myši
Funkce myši se zabývají simulací různých operací myši.
Public void mouseMove (int x, int y)
Zde dva parametry určují souřadnice obrazovky. Jakmile dáme souřadnice, přesune se myš do bodu daných souřadnic obrazovky.
Postupujte podle daného fragmentu kódu:
robot.mouseMove (0, 900);
Zde je pozice parametru x 0 a parametr y je 900. Takže se myš přesune do tohoto bodu. Lze provést chybovou a zkušební metodu pro přesun do různých pozic obrazovky.
Public void mousePress (int tlačítka)
Lze si tuto funkci představit pomocí funkcí keyPress, abychom získali jasnou koncepci. Tato metoda simuluje funkce mousePress.
Postupujte podle níže uvedeného fragmentu kódu:
robot.mousePress(InputEvent.BUTTON1_DOWN_MASK); //associated with mouse left click robot.mousePress(InputEvent.BUTTON2_DOWN_MASK); //associated with mouse middle click robot.mousePress(InputEvent.BUTTON3_DOWN_MASK); //associated with mouse right click
Public void mouseRelease (int tlačítka)
Lze si tuto funkci představit pomocí funkcí keyPress, abychom získali jasnou koncepci. Tato metoda simuluje funkce mousePress.
Postupujte podle níže uvedeného fragmentu kódu:
robot.mouseRelease(InputEvent.BUTTON1_DOWN_MASK); //associated with mouse left click robot.mouseRelease(InputEvent.BUTTON2_DOWN_MASK); //associated with mouse middle click robot.mouseRelease(InputEvent.BUTTON3_DOWN_MASK); //associated with mouse right click
Poznámka :K průzkumu je k dispozici několik dalších metod. Výše uvedené metody jsou ale nejčastěji používány. Chcete-li však prozkoumat další metody, můžete v dokumentech Oracle vyhledat třídu Robot Java.
Použití třídy robota v Javě
Kdy a kde můžeme použít Robot Class v Javě k efektivnímu vylepšení funkčnosti v rámci automatizace?
Jak všichni víme, že selen lze použít k automatizaci webových aplikací. Tyto webové aplikace v selenu používají podkladový webový objekt (lokátory) webové aplikace k určení polohy na webové stránce a odpovídajícím způsobem fungují. Nyní v určitých případech vidíme, že při automatizaci v operačním systému Windows musíme zpracovat vyskakovací okno ověřování systému Windows nebo jakékoli jiné vyskakovací okno systému Windows.
Selenium nemůže automatizovat akce Windows, ale k provedení úkolu můžeme použít Robot Class v Javě.
Příklady tříd Java Robot
Příklad 1: Používání třídy robotů k automatizaci některých funkcí systému Windows
Někdy může být jakákoli malá část / modul celé webové aplikace navržena bleskově. K manipulaci s touto částí můžeme použít třídu Robot. Protože webové objekty zůstávají skryté pro část navrženou ve formátu Flash.
Dotazy na rozhovor s kódováním v C ++
Další důležitou funkcí, kterou lze automatizovat pomocí třídy robotů v Javě, jsou editory formátovaného textu, které někdy zůstávají zabudovány do webových aplikací. V editorech RTF existuje několik provozních funkcí, které lze pomocí této třídy snadno automatizovat.
Příklad 2: Používání třídy robota pro automatizaci polí RTF
Poznámka :Na trhu jsou k dispozici další nástroje s otevřeným zdrojovým kódem Auto IT (speciálně navržené k automatizaci grafického uživatelského rozhraní Windows), Sikuli (nástroj pro zpracování obrazu) atd., aby dosáhly podobných úkolů.
To je pravda, ale třída robotů v Javě je dodávána s JDK. K instalaci tedy nepotřebujeme žádný jiný nástroj, což je přímá výhoda, pokud někdo používá automatizační rámec založený na prostředí Java.
Automatizace polí RTF
Ukázkový obrázek:
Příklad úryvku:
import java.awt.AWTException; import java.awt.Robot; import java.awt.Toolkit; import java.awt.datatransfer.Clipboard; import java.awt.datatransfer.StringSelection; import java.awt.event.KeyEvent; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.chrome.ChromeDriver; public class javainteraction { public void seleniumwithjava() throws AWTException, InterruptedException { System.setProperty('webdriver.chrome.driver', 'D://chromedriver//chromedriver.exe'); WebDriver driver =new ChromeDriver(); driver.get('https://www.tinymce.com' ); driver.manage().window().maximize(); driver.findElement(By.xpath('(//div(contains(@aria-label,'Bold'))//i(contains(@class,'mce-i-bold')))(1)')).click(); Robot r = new Robot(); String text = 'Welcome to the world of automation.'; StringSelection stringSelection = new StringSelection(text); Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard(); clipboard.setContents(stringSelection, stringSelection); r.keyPress(KeyEvent.VK_CONTROL); r.keyPress(KeyEvent.VK_V); r.keyRelease(KeyEvent.VK_V); r.keyRelease(KeyEvent.VK_CONTROL); Thread.sleep(1000); String text1 = 'Hope you enjoy This'; StringSelection stringSelection1 = new StringSelection(text1); Clipboard clipboard1 = Toolkit.getDefaultToolkit().getSystemClipboard(); clipboard1.setContents(stringSelection1, stringSelection1); r.keyPress(KeyEvent.VK_CONTROL); r.keyPress(KeyEvent.VK_V); r.keyRelease(KeyEvent.VK_V); r.keyRelease(KeyEvent.VK_CONTROL); driver.findElement(By.xpath('(//div(contains(@aria-label,'Italic'))//i(contains(@class,'mce-i-italic')))(1)')).click(); } public static void main(String args()) throws AWTException, InterruptedException { javainteraction j1 = new javainteraction(); j1.seleniumwithjava(); } }
Zde byly dvě funkce editorů RTF automatizovány pomocí ikony tučně a kurzívou.
Automatizace některých funkcí systému Windows
import java.awt.AWTException; import java.awt.Robot; import java.awt.event.InputEvent; public class RobotJ { public static void main(String() args) { // TODO Auto-generated method stub Robot robot; try { robot = new Robot(); robot.mouseMove(0, 900); robot.delay(1000); robot.mousePress(InputEvent.BUTTON1_MASK); robot.mouseRelease(InputEvent.BUTTON1_MASK); robot.delay(1000); robot.mouseMove(300, 490); robot.mousePress(InputEvent.BUTTON3_DOWN_MASK); robot.mouseRelease(InputEvent.BUTTON3_DOWN_MASK); robot.delay(1000); robot.mouseMove(400, 690); robot.delay(1000); robot.mousePress(InputEvent.BUTTON1_MASK); robot.mouseRelease(InputEvent.BUTTON1_MASK); robot.delay(1000); robot.mouseMove(1300, 150); } catch (AWTException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
Tento fragment kódu se obecně zabývá správou počínaje ikonou spuštění po zobrazení konfigurace systému. Pomocí podobného konceptu lze také zpracovat generování vyskakovacích oken systému Windows při zahájení nebo mezi operacemi na webové stránce.
Tipy pro začlenění robotické Javy do existujícího rámce Java + Selenium
Nyní se podíváme, jak upravit výše předvedenou část kódů, abychom je mohli přizpůsobit do existujícího rámce Selenium + Java.
Vezměte prosím na vědomí, že se jedná o koncept a existuje mnoho dalších způsobů, jak toho dosáhnout. Tento koncept můžeme dále rozšířit / upravit tak, aby vyhovoval obchodním potřebám, které se mohou u jednotlivých projektů lišit.
Nejprve vytvořte třídu, která bude obsahovat všechny běžné metody nebo třídy robotů, které jsou k dispozici, takže kdykoli je to požadováno, můžeme tyto metody využít k jakýmkoli jiným třídám, kde píšeme testovací případy.
Níže to ukazují fragmenty kódu:
import java.awt.AWTException; import java.awt.Robot; import java.awt.event.InputEvent; import java.awt.event.KeyEvent; public class CommonRobotMethods { Robot robot; int a= 0,b= 900; //This value can be exported from property file or excel sheet instead of direct input to the code public void LeftClickMouse() throws AWTException { robot = new Robot(); robot.mousePress(InputEvent.BUTTON1_DOWN_MASK); robot.mouseRelease(InputEvent.BUTTON1_DOWN_MASK); } public void MiddleClickMouse() throws AWTException { robot = new Robot(); robot.mousePress(InputEvent.BUTTON2_DOWN_MASK); robot.mouseRelease(InputEvent.BUTTON2_DOWN_MASK); } public void RightClickMouse() throws AWTException { robot = new Robot(); robot.mousePress(InputEvent.BUTTON2_DOWN_MASK); robot.mouseRelease(InputEvent.BUTTON2_DOWN_MASK); } public void MouseMove(int x, int y) throws AWTException { robot = new Robot(); robot.mouseMove(x,y); } public void KeyPressCTRL() throws AWTException { robot = new Robot(); robot.keyPress(KeyEvent.VK_CONTROL); } public void KeyReleaseCTRL() throws AWTException { robot = new Robot(); robot.keyRelease(KeyEvent.VK_CONTROL); } public void KeyPressV() throws AWTException { robot = new Robot(); robot.keyPress(KeyEvent.VK_V); } public void KeyReleaseV() throws AWTException { robot = new Robot(); robot.keyRelease(KeyEvent.VK_V); } public String RobotJavaMethods(String utilityMethod) { switch(utilityMethod) { case 'LeftClickMouse': try { LeftClickMouse(); } catch(AWTException e) { //Write any thing to track the error } break; case 'MiddleClickMouse': try { MiddleClickMouse(); } catch(AWTException e) { //Write any thing to track the error } break; case 'RightClickMouse': try { RightClickMouse(); } catch(AWTException e) { //Write any thing to track the error } break; case 'MouseMove': try { MouseMove(a,b); } catch(AWTException e) { //Write any thing to track the error } break; case 'KeyPressCTRL': try { KeyPressCTRL(); } catch(AWTException e) { //Write any thing to track the error } break; case 'KeyReleaseCTRL': try { KeyReleaseCTRL(); } catch(AWTException e) { //Write any thing to track the error } break; case 'KeyPressV': try { KeyPressV(); } catch(AWTException e) { //Write any thing to track the error } break; case 'KeyReleaseV': try { KeyReleaseV(); } catch(AWTException e) { //Write any thing to track the error } break; default: System.out.println('UnHandled error'); } return utilityMethod; } }
Zde jsme vzali několik metod, lze podobně přidat další metody podle jejich projektových potřeb.
Každá metoda je připojena k jednomu případu přepínače, takže klíčové slovo případ lze použít, kdykoli a kdekoli je to požadováno.
Nyní se podívejme, jak můžeme transformovat kód, který jsme napsali, pro automatizaci editoru RTF:
Níže si přečtěte fragment kódu, abyste pochopili, že:
import java.awt.Robot; import java.awt.Toolkit; import java.awt.datatransfer.Clipboard; import java.awt.datatransfer.StringSelection; import java.awt.event.KeyEvent; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.chrome.ChromeDriver; public class seleniumFramework { public void actualOperationalMethod() throws InterruptedException { CommonRobotMethods cm = new CommonRobotMethods(); System.setProperty('webdriver.chrome.driver', UtilityPathandLoc.Chromedriver_path); WebDriver driver =new ChromeDriver(); driver.get(UtilityPathandLoc.APPURL); driver.manage().window().maximize(); driver.findElement(By.xpath(UtilityPathandLoc.Bold_loc)).click(); String text = UtilityPathandLoc.First_input; StringSelection stringSelection = new StringSelection(text); Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard(); clipboard.setContents(stringSelection, stringSelection); cm.RobotJavaMethods('KeyPressCTRL'); cm.RobotJavaMethods('KeyPressV'); cm.RobotJavaMethods('KeyReleaseV'); cm.RobotJavaMethods('KeyReleaseCTRL'); Thread.sleep(1000); String text1 = UtilityPathandLoc.Second_input; StringSelection stringSelection1 = new StringSelection(text1); Clipboard clipboard1 = Toolkit.getDefaultToolkit().getSystemClipboard(); clipboard1.setContents(stringSelection1, stringSelection1); cm.RobotJavaMethods('KeyPressCTRL'); cm.RobotJavaMethods('KeyPressV'); cm.RobotJavaMethods('KeyReleaseV'); cm.RobotJavaMethods('KeyReleaseCTRL'); driver.findElement(By.xpath(UtilityPathandLoc.Italics_loc)).click(); } public static void main(String args()) { seleniumFramework s1 = new seleniumFramework(); try { s1.actualOperationalMethod(); } catch (InterruptedException e) { e.printStackTrace(); } } }
Vytváříme objekt třídy CommonRobotMethods uvnitř třídy seleniumFramework a přistupujeme k metodám definovaným ve třídě CommonRobotMethods prostřednictvím. Přepněte klíčová slova definovaná ve třídě CommonRobotMethods.
Zde jsme vytvořili rozhraní pro zápis všech vstupů, které lze externalizovat. Dá se ale dělit a psát v excelu / vlastnostech nebo rozhraní podle jejich úrovně pohodlí nebo obchodních potřeb.
public interface UtilityPathandLoc { String APPURL= 'https://www.tinymce.com'; String Chromedriver_path = 'D://chromedriver//chromedriver.exe'; String Bold_loc = '(//div(contains(@aria-label,'Bold'))//i(contains(@class,'mce-i-bold')))(1)'; String Italics_loc = '(//div(contains(@aria-label,'Italic'))//i(contains(@class,'mce-i-italic')))(1)'; String First_input = 'Welcome to the world of automation.'; String Second_input = 'Hope you enjoy This'; }
Závěr
Doufejme, že nyní je jasné, jak využít třídu robotů v rámci prostředí Selen + Java. Přejeme všem, aby tento článek považovali za zajímavý a užitečný při učení se konceptu.
Doporučené čtení
- Cucumber Selenium Tutorial: Cucumber Java Selenium WebDriver Integration
- Základy jazyka Java: Java Syntax, třída Java a základní koncepty Java
- Prozkoumejte základy Java v selenu pomocí příkladů
- Integrace selenu s JMeter
- Výukový program třídy skeneru Java s příklady
- Výukový program třídy Java Array - třída java.util.Arrays s příklady
- Co je Java Vector | Výukový program Java Vector Class s příklady
- Výukový program pro rozhraní Java a abstraktní třídu s příklady