robot class selenium webdriver with java
Acest tutorial explică utilizările, exemplele și funcționalitățile clasei de roboți în Java și integrarea acestuia cu Selenium Framework:
Robotul Java este un Robot clasa în Java Pachet AWT. În general, este folosit pentru a simula operațiunile în timp real de la tastatură și mouse pe care le facem manual.
Scopul principal al clasei de robot în Java este automatizarea. Frumusețea este că poate fi integrat cu ușurință în cadrul de automatizare actual pentru a-i spori acoperirea.
Ce veți învăța:
- Clasa robotului în Java
- Concluzie
Clasa robotului în Java
În acest tutorial, vom afla despre integrarea Selenium cu Robot Class în Java, dar, în general, Java Robot Class poate fi utilizat în orice cadru de automatizare construit pe Java.
Simularea funcționalităților clasei de roboți
Există multe funcționalități ale Robot Class în Java, enumerate mai jos sunt câteva metode notate asociate cu acestea:
# 1) Funcționalitățile tastaturii
Funcționalitățile tastaturii din clasa Robot se ocupă în general de simularea diferitelor taste disponibile în tastaturi și a operațiilor acestora.
Tasta publică de gol Apăsați (codul cheie int)
Această funcție apasă tasta parametrului de intrare. Pentru a finaliza operațiunea, trebuie utilizată metoda de eliberare a cheii.
Urmați fragmentul de cod de mai jos:
r.keyPress(KeyEvent.VK_CONTROL); r.keyPress(KeyEvent.VK_V);
Aici, în fragmentul de cod de mai sus, doar apăsăm CTRL + V. Metoda KeyEvent este asociată cu alte taste disponibile pentru tastatura noastră. Se pot încerca pe toate.
Public void keyRelease (cod cheie int)
Această metodă eliberează cheia parametrului de intrare. Aceasta este post-operație la metoda de apăsare a tastelor.
Urmați fragmentul de cod de mai jos:
r.keyRelease(KeyEvent.VK_V); r.keyRelease(KeyEvent.VK_CONTROL);
Aici, în fragmentul de cod de mai sus, lansăm CTRL + V. În mod similar, așa cum s-a menționat mai sus, metoda KeyEvent este asociată și cu alte taste disponibile pentru tastatura noastră. Se pot încerca pe toate.
# 2) Funcționalitățile mouse-ului
Funcționalitățile mouse-ului se ocupă cu simularea diferitelor operații ale mouse-ului.
Public void mouseMove (int x, int y)
Aici, cei doi parametri determină coordonatele ecranului. Odată ce am dat coordonatele mouse-ul se deplasează în punctul coordonatelor date ale ecranului.
Urmați fragmentul de cod dat:
robot.mouseMove (0, 900);
Aici, poziția parametrului x este 0, iar parametrul y este 900. Deci mouse-ul se va deplasa în acel punct. Se poate face o eroare și o metodă de încercare pentru a trece la diferitele poziții ale ecranului.
Mouse public gol Apăsați (butoane int)
Ne putem imagina această funcționalitate cu funcționalități keyPress pentru a obține o concepție clară. Această metodă simulează funcțiile mousePress.
Urmați fragmentul de cod de mai jos:
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 (butoane int)
Ne putem imagina această funcționalitate cu funcționalități keyPress pentru a obține o concepție clară. Această metodă simulează funcțiile mousePress.
Urmați fragmentul de cod de mai jos:
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
Notă :Există mai multe alte metode disponibile pentru explorare. Dar metodele de mai sus sunt cele mai frecvent utilizate. Cu toate acestea, pentru a explora alte metode, puteți căuta clasa Robot Java în documentele Oracle.
Utilizarea clasei de robot în Java
Când și unde putem folosi Robot Class în Java pentru a îmbunătăți funcționalitatea eficient într-un cadru de automatizare?
După cum știm cu toții că Selenium poate fi utilizat pentru automatizarea aplicațiilor web. Aceste aplicații web din Selenium utilizează obiectul web de bază (localizatoarele) aplicației web pentru a determina poziția pe pagina web și pentru a funcționa corespunzător. Acum, în anumite cazuri, vedem că trebuie să gestionăm fereastra pop-up de autentificare Windows sau orice altă fereastră pop-up Windows în timp ce se automatizează pe sistemul de operare Windows.
Selenium nu poate automatiza acțiunile Windows, dar putem folosi Robot Class în Java pentru a îndeplini sarcina.
Exemple de clase Java Robot
Exemplul 1: Utilizarea Robot Class pentru a automatiza unele funcționalități Windows
Uneori, orice parte / modul mic al întregii aplicații web poate fi proiectat în flash. Putem folosi clasa Robot pentru a gestiona acea parte. Deoarece obiectele web rămân ascunse pentru partea proiectată în flash.
care sunt cele mai bune aplicații de realitate virtuală
O altă caracteristică importantă care poate fi automatizată folosind Robot Class în Java sunt editorii de text îmbogățit, care uneori rămân încorporați în aplicații web. Există mai multe funcții operaționale în editorii RTF, ceea ce este destul de ușor de automatizat folosind această clasă.
Exemplul 2: Utilizarea Robot Class pentru automatizarea câmpurilor RTF
Notă :Există alte instrumente open-source disponibile pe piață, cum ar fi Auto IT (special conceput pentru automatizarea Windows GUI), Sikuli (instrument de procesare a imaginilor) etc. pentru a îndeplini sarcini similare.
Acest lucru este adevărat, dar Robot Class în Java vine cu JDK. Astfel, nu avem nevoie de niciun alt instrument pentru instalare, acesta este un avantaj direct dacă se folosește un cadru de automatizare bazat pe Java.
Automatizarea câmpurilor RTF
Exemplu de imagine:
Exemplu de fragment:
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(); } }
Aici, două funcționalități ale editorilor RTF au fost automatizate folosind pictograma aldină și cursivă.
Automatizarea unor funcționalități 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(); } } }
Acest fragment de cod se ocupă în general de dreptul de la începutul pictogramei de pornire până la vizualizarea configurației sistemului. Folosind un concept similar se poate gestiona, de asemenea, generarea de ferestre pop-up în timpul inițierii sau între operații pe o pagină web.
Sfaturi pentru a încorpora robotul Java în cadrul Java + Selenium existent
Acum, vom vedea cum să modificăm piesa de cod demonstrată mai sus, astfel încât să le putem acomoda într-un cadru Selenium + Java existent.
Vă rugăm să rețineți că acesta este un concept și există multe alte modalități de a realiza același lucru. Putem extinde / modifica în continuare acest concept pentru a satisface nevoile de afaceri care pot varia de la proiect la proiect.
Mai întâi, creați o clasă care să conțină toate metodele comune sau clasa Robot puse la dispoziție, astfel încât ori de câte ori este necesar să putem utiliza aceste metode la orice alte clase în care scriem cazuri de testare.
Fragmentele de cod de mai jos demonstrează acest lucru:
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; } }
Aici am luat câteva metode, se pot adăuga în mod similar alte metode în funcție de necesitățile proiectului lor.
Fiecare metodă este atașată la un singur caz de comutare, astfel încât cuvântul cheie caz să poată fi folosit când și oriunde este necesar.
Acum să vedem cum putem transforma codul pe care l-am scris pentru a automatiza editorul RTF:
Consultați fragmentul de cod de mai jos pentru a înțelege că:
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(); } } }
Creăm obiectul clasei CommonRobotMethods în clasa seleniumFramework și accesăm metodele definite în clasa CommonRobotMethods prin. Comutați cuvintele cheie definite în clasa CommonRobotMethods.
Aici, am creat o interfață pentru a scrie toate intrările care pot fi externalizate. Dar se poate împărți și scrie în Excel / proprietăți sau interfață în funcție de nivelul lor de confort sau de nevoile afacerii.
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'; }
Concluzie
Sperăm că modul de utilizare a Robot Class într-un cadru Selenium + Java este clar acum. Ne dorim ca toată lumea să găsească acest articol interesant și util în învățarea conceptului.
Lectură recomandată
- Tutorial Castravete Seleniu: Integrare Castravete Java Seleniu WebDriver
- Noțiuni de bază Java: Sintaxă Java, Java Class și concepte de bază Java
- Explorează elementele esențiale ale Java în seleniu cu exemple
- Integrarea seleniului cu JMeter
- Tutorial de clasă Java Scanner cu exemple
- Tutorial Java Array Class - java.util.Arrays Class cu exemple
- Ce este Java Vector | Tutorial Java Vector Class cu exemple
- Interfață Java și tutorial de clasă abstractă cu exemple