robot class selenium webdriver with java
Aquest tutorial explica els usos, exemples i funcionalitats de la classe de robots a Java i la seva integració amb Selenium Framework:
El robot Java és un robot classe a la Java Paquet AWT. Generalment s’utilitza per simular operacions de teclat i ratolí en temps real que fem manualment.
L’objectiu principal de la classe de robots a Java és l’automatització. La seva bellesa és que es pot integrar fàcilment amb el marc d’automatització actual per augmentar-ne l’abast.
Què aprendreu:
- Classe de robots a Java
- Conclusió
Classe de robots a Java
En aquest tutorial, aprendrem sobre la integració de Selenium amb Robot Class a Java, però en general, Java Robot Class es pot utilitzar en qualsevol marc d’automatització basat en Java.
Simulació de funcionalitats de la classe de robots
Hi ha moltes funcionalitats de Robot Class a Java, a continuació es detallen alguns mètodes assenyalats associats amb ells:
# 1) Funcionalitats del teclat
Les funcionalitats del teclat de la classe Robot generalment s’ocupen de la simulació de diferents tecles disponibles als teclats i les seves operacions.
Tecla de buit públic Premeu (codi de clau int)
Aquesta funció prem la tecla del paràmetre d'entrada. Per completar l’operació s’ha d’utilitzar el mètode d’alliberament de claus.
Seguiu el fragment de codi següent:
r.keyPress(KeyEvent.VK_CONTROL); r.keyPress(KeyEvent.VK_V);
Aquí, al fragment de codi anterior, només estem pressionant CTRL + V. El mètode KeyEvent està associat amb altres tecles disponibles per al nostre teclat. Es poden provar tots.
Public void keyRelease (codi de codi int)
Aquest mètode allibera la clau del paràmetre d'entrada. Això és posterior al funcionament del mètode de pressió de tecles.
Seguiu el fragment de codi següent:
r.keyRelease(KeyEvent.VK_V); r.keyRelease(KeyEvent.VK_CONTROL);
Aquí, al fragment de codi anterior, acabem de llançar CTRL + V. De la mateixa manera que s'ha indicat anteriorment, el mètode KeyEvent també s'associa amb altres tecles disponibles per al nostre teclat. Es poden provar tots.
# 2) Funcionalitats del ratolí
Les funcionalitats del ratolí s’ocupen de simular diferents operacions del ratolí.
Public void mouseMove (int x, int y)
Aquí, els dos paràmetres determinen les coordenades de la pantalla. Un cop donem les coordenades, el ratolí es mou cap al punt de les coordenades donades de la pantalla.
Seguiu el fragment de codi indicat:
robot.mouseMove (0, 900);
Aquí, la posició del paràmetre x és 0 i el paràmetre y és 900. Així el ratolí es mourà fins a aquest punt. Es pot fer un mètode d'error i prova per passar a les diverses posicions de la pantalla.
Premeu el ratolí buit públic (botons int)
Es pot imaginar aquesta funcionalitat amb les funcionalitats keyPress per obtenir una concepció clara. Aquest mètode simula les funcions del mousePress.
Seguiu el fragment de codi següent:
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 (botons int)
Es pot imaginar aquesta funcionalitat amb les funcionalitats keyPress per obtenir una concepció clara. Aquest mètode simula les funcions del mousePress.
Seguiu el fragment de codi següent:
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
Nota :Hi ha diversos altres mètodes disponibles per a l'exploració. Però els mètodes anteriors són els més utilitzats. Tanmateix, per explorar altres mètodes, es pot cercar la classe Robot Java als documents Oracle.
Ús de la classe de robots a Java
Quan i on podem utilitzar Robot Class a Java per millorar la funcionalitat de manera eficaç en un marc d’automatització?
Com tots sabem que Selenium es pot utilitzar per automatitzar aplicacions web. Aquestes aplicacions web de Selenium utilitzen l'objecte web subjacent (localitzadors) de l'aplicació web per determinar la posició a la pàgina web i funcionar en conseqüència. Ara, en alguns casos, veiem que hem de gestionar la finestra emergent d’autenticació de Windows o qualsevol altra finestra emergent mentre s’automatitza el sistema operatiu Windows.
Selenium no pot automatitzar les accions de Windows, però podem utilitzar Robot Class a Java per dur a terme la tasca.
Exemples de classes de robots Java
Exemple 1: Ús de Robot Class per automatitzar algunes funcionalitats de Windows
De vegades, qualsevol petita part / mòdul de tota l'aplicació web es pot dissenyar en flash. Podem utilitzar la classe Robot per gestionar aquesta part. Atès que els objectes web romanen amagats per a la peça dissenyada en flash.
programari de punt de venda per a ipad
Una altra característica important que es pot automatitzar mitjançant Robot Class a Java són els Rich Text Editors, que de vegades romanen incrustats en aplicacions web. Hi ha diverses funcions operatives en els editors RTF, cosa que és molt fàcil d’automatitzar mitjançant aquesta classe.
Exemple 2: Utilització de Robot Class per automatitzar camps RTF
Nota :Hi ha altres eines de codi obert disponibles al mercat, com ara Informàtica automàtica (especialment dissenyat per automatitzar la interfície gràfica d’usuari de Windows), Sikuli (eina de processament d’imatges), etc. per realitzar tasques similars.
Això és cert, però Robot Class a Java inclou JDK. Per tant, no necessitem cap altra eina per instal·lar, això és un avantatge directe si s’utilitza un marc d’automatització basat en Java.
Automatització de camps RTF
Imatge de mostra:
Fragment d'exemple:
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(); } }
Aquí s’han automatitzat dues funcionalitats dels editors RTF mitjançant la icona de negreta i cursiva.
Automatització d'algunes funcionalitats de 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(); } } }
Aquest fragment de codi sol tractar-se del dret a partir de la icona d'inici fins a la visualització de la configuració del sistema. Utilitzant un concepte similar també es pot gestionar la generació de finestres emergents de Windows mentre s’inicia o s’està operant en una pàgina web.
Consells per incorporar Java del robot a Java + Selenium Framework existent
Ara veurem com modificar la peça de codis demostrada anteriorment perquè puguem allotjar-la en un marc de Selenium + Java existent.
Tingueu en compte que aquest és un concepte i hi ha moltes altres maneres d’aconseguir el mateix. Podem ampliar / modificar aquest concepte per satisfer les necessitats empresarials que poden variar d'un projecte a un altre.
En primer lloc, creeu una classe que inclogui tots els mètodes comuns o de classe Robot disponibles, de manera que sempre que sigui necessari puguem utilitzar aquests mètodes a qualsevol altra classe on estiguem escrivint casos de prova.
A continuació, els fragments de codi ho demostren:
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; } }
Aquí hem pres alguns mètodes, de manera similar es poden afegir altres mètodes segons les seves necessitats de projecte.
Cada mètode s’adjunta a un cas de commutació, de manera que es pot utilitzar la paraula clau de cas quan i on sigui necessari.
Ara vegem com podem transformar el codi que hem escrit per automatitzar l'editor RTF:
Consulteu el fragment de codi següent per entendre que:
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(); } } }
Estem creant l’objecte de la classe CommonRobotMethods dins de la classe seleniumFramework i accedim als mètodes definits a la classe CommonRobotMethods. Canvieu les paraules clau definides a la classe CommonRobotMethods.
Aquí hem creat una interfície per escriure totes les entrades que es poden externalitzar. Però es pot dividir i escriure en excel / propietats o interfície segons el seu nivell de comoditat o necessitats empresarials.
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'; }
Conclusió
Amb sort, ara és clar com utilitzar Robot Class dins d’un marc Selenium + Java. Desitgem que tothom trobi aquest article interessant i útil per aprendre el concepte.
Lectura recomanada
- Tutorial de Cogombre Selenium: Integració de Cogombre Java Selenium WebDriver
- Conceptes bàsics de Java: sintaxi de Java, Java Class i conceptes bàsics de Java
- Exploreu els aspectes bàsics de Java al seleni amb exemples
- Integració de seleni amb JMeter
- Tutorial de classe de Java Scanner amb exemples
- Tutorial de classe Java Array: classe java.util.Arrays amb exemples
- Què és Java Vector | Tutorial de Java Vector Class amb exemples
- Interfície Java i tutoria de classes abstractes amb exemples