robot class selenium webdriver with java
Denne vejledning forklarer anvendelser, eksempler og funktioner på robotklassen i Java og dens integration med Selen Framework:
Robot Java er en Robot klasse i Java AWT-pakke. Det bruges normalt til at simulere tastatur- og musefunktioner i realtid, som vi udfører manuelt.
Hovedformålet med Robot Class i Java er automatisering. Det smukke ved det er, at det let kan integreres med den nuværende automatiseringsramme for at øge rækkevidden.
Hvad du lærer:
Robotklasse i Java
I denne vejledning lærer vi om Selen-integration med Robot Class i Java, men generelt kan Java Robot Class bruges i enhver automatiseringsramme, der er bygget på Java.
Simulering af funktionaliteter i robotklasse
Der er mange funktioner i Robot Class i Java, der er angivet nedenfor er nogle bemærkede metoder forbundet med dem:
# 1) Tastaturfunktioner
Tastaturfunktionerne i Robot-klassen beskæftiger sig generelt med simulering af forskellige taster, der er tilgængelige på tastaturerne og deres operationer.
Offentlig ugyldig nøgle Tryk (int nøglekode)
Denne funktion trykker på inputparametertasten. For at fuldføre handlingen skal nøglefrigivelsesmetoden bruges.
Følg nedenstående kodestykke:
r.keyPress(KeyEvent.VK_CONTROL); r.keyPress(KeyEvent.VK_V);
Her i ovenstående kodestykke trykker vi bare på CTRL + V. Metoden KeyEvent er forbundet med andre taster, der er tilgængelige for vores tastatur. Man kan prøve dem alle.
Offentlig ugyldig keyRelease (int nøglekode)
Denne metode frigiver inputparameternøglen. Dette er postoperation til tastetrykmetoden.
Følg nedenstående kodestykke:
r.keyRelease(KeyEvent.VK_V); r.keyRelease(KeyEvent.VK_CONTROL);
Her i ovenstående kodestykke frigiver vi bare CTRL + V. På samme måde som nævnt ovenfor er metoden KeyEvent også forbundet med andre taster, der er tilgængelige for vores tastatur. Man kan prøve dem alle.
# 2) Musfunktioner
Musefunktionaliteterne beskæftiger sig med at simulere forskellige operationer af musen.
Offentligt ugyldigt mouseMove (int x, int y)
Her bestemmer de to parametre koordinaterne på skærmen. Når vi har givet koordinaterne, bevæger musen sig til punktet for de givne koordinater på skærmen.
Følg det givne kodestykke:
robot.mouseMove (0, 900);
Her er placeringen af parameter x 0, og parameteren y er 900. Så musen flytter til det punkt. Man kan gøre en fejl- og prøvemetode for at flytte til de forskellige positioner på skærmen.
Offentlig ugyldig musTryk på (int-knapper)
Man kan forestille sig denne funktionalitet med keyPress-funktionaliteter for at få en klar opfattelse. Denne metode simulerer mousePress-funktioner.
Følg nedenstående kodestykke:
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
Offentlig ugyldig musRelease (int-knapper)
Man kan forestille sig denne funktionalitet med keyPress-funktionaliteter for at få en klar opfattelse. Denne metode simulerer mousePress-funktioner.
Følg nedenstående kodestykke:
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
Bemærk :Der er flere andre metoder til udforskning. Men ovenstående metoder er de hyppigst anvendte. Men for at udforske andre metoder kan man søge efter Robot Java-klasse i Oracle docs.
Brug af robotklasse i Java
Hvornår og hvor kan vi bruge Robot Class i Java til at forbedre funktionaliteten effektivt i en automatiseringsramme?
Som vi alle ved, kan Selen bruges til at automatisere webapplikationer. Disse webapplikationer i Selen bruger web-appens underliggende webobjekt (locators) til at bestemme placeringen på websiden og fungere i overensstemmelse hermed. I visse tilfælde ser vi nu, at vi skal håndtere windows-godkendelses-pop-up eller andre windows-pop-up, mens vi automatiserer på Windows-operativsystemet.
Selen kan ikke automatisere Windows-handlinger, men vi kan bruge Robot Class i Java til at udføre opgaven.
Eksempler på Java-robotklasse
Eksempel 1: Brug af robotklasse til at automatisere nogle Windows-funktioner
Nogle gange kan enhver lille del / modul af hele webapplikationen være designet i flash. Vi kan bruge robotklassen til at håndtere den del. Da webobjekter forbliver skjult for den del, der er designet i flash.
gratis app til at planlægge instagramindlæg
En anden vigtig funktion, der kan automatiseres ved hjælp af Robot Class i Java, er Rich Text Editors, som undertiden forbliver indlejret i webapplikationer. Der er flere operationelle funktioner i RTF-redaktører, som det er ret nemt at automatisere ved hjælp af denne klasse.
Eksempel 2: Brug af robotklasse til automatisering af RTF-felter
Bemærk :Der er andre open source-værktøjer tilgængelige på markedet som Auto IT (specielt designet til at automatisere Windows GUI), Sikuli (billedbehandlingsværktøj) osv. for at udføre lignende opgaver.
Dette er sandt, men Robot Class i Java leveres med JDK. Således kræver vi ikke noget andet værktøj at installere, dette er en lige fordel, hvis man bruger en Java-baseret automatiseringsramme.
Automatisering af RTF-felter
Prøvebillede:
Eksempel på uddrag:
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(); } }
Her er to funktioner i RTF-redaktørerne blevet automatiseret ved hjælp af fed og kursiv ikon.
Automatisering af nogle Windows-funktioner
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(); } } }
Dette kodestykke beskæftiger sig generelt med start fra startikon til visning af systemkonfigurationen. Ved hjælp af et lignende koncept kan man også håndtere windows pop-up-generering, mens der startes eller mellem operationer på en webside.
Tips til at indarbejde robot-Java i eksisterende Java + Selen-ramme
Nu skal vi se, hvordan man ændrer det ovenfor demonstrerede stykke koder, så vi kan rumme det samme i en eksisterende Selen + Java-ramme.
Bemærk, at dette er et koncept, og der er mange andre måder at opnå det samme på. Vi kan yderligere udvide / ændre dette koncept for at imødekomme de forretningsbehov, der kan variere fra projekt til projekt.
Først skal du oprette en klasse, der indeholder alle de almindelige metoder eller Robot-klasser, der er tilgængelige, så når det er nødvendigt, kan vi bruge disse metoder til andre klasser, hvor vi skriver testcases.
Nedenfor viser kodestykker dette:
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; } }
Her har vi taget et par metoder, man kan ligeledes tilføje andre metoder alt efter deres projektbehov.
Hver metode er knyttet til en switch-sag, så case-nøgleordet kan bruges når og hvor det er nødvendigt.
Lad os nu se, hvordan vi kan omdanne den kode, som vi har skrevet for at automatisere RTF-editor:
Se nedenstående kodestykke for at forstå det:
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(); } } }
Vi opretter objektet til CommonRobotMethods-klassen inde i seleniumFramework-klassen og får adgang til metoderne defineret i CommonRobotMethods-klassen via. Skift nøgleord defineret i CommonRobotMethods klasse.
Her har vi oprettet en grænseflade til at nedskrive alle de input, der kan eksternaliseres. Men man kan opdele og skrive i excel / egenskaber eller interface efter deres komfortniveau eller forretningsbehov.
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'; }
Konklusion
Forhåbentlig er det klart, hvordan man bruger Robot Class inden for en Selen + Java-ramme. Vi ønsker, at alle finder denne artikel interessant og nyttig til at lære konceptet.
Anbefalet læsning
- Agurk Selen Tutorial: Agurk Java Selen WebDriver Integration
- Java Basics: Java Syntax, Java Class og Core Java Concepts
- Udforsk det væsentlige ved Java i selen med eksempler
- Integration af selen med JMeter
- Java Scanner-klassevejledning med eksempler
- Java Array Class Tutorial - java.util.Arrays-klasse med eksempler
- Hvad er Java Vector | Java Vector Class Tutorial med eksempler
- Java-interface og abstrakt klasseundervisning med eksempler