robot class selenium webdriver with java
Denne opplæringen forklarer bruksområder, eksempler og funksjoner for robotklasse i Java og integrasjonen med Selen Framework:
Robot Java er en Robot klasse i Java AWT-pakke. Den brukes vanligvis til å simulere sanntids tastatur- og musoperasjoner som vi gjør manuelt.
Hovedformålet med Robot Class i Java er automatisering. Det fine med det er at det enkelt kan integreres med dagens automatiseringsrammeverk for å øke rekkevidden.
Hva du vil lære:
Robotklasse i Java
I denne opplæringen vil vi lære om Selenium-integrasjon med Robot Class i Java, men generelt kan Java Robot Class brukes i alle automatiseringsrammer bygget på Java.
Simulering av funksjoner i robotklasse
Det er mange funksjoner i Robot Class i Java, oppført nedenfor er noen kjent metoder knyttet til dem:
# 1) Tastaturfunksjoner
Tastaturfunksjonene i Robot-klassen handler generelt om simulering av forskjellige taster som er tilgjengelige på tastaturene og deres operasjoner.
Offentlig ugyldig tast Trykk på (int nøkkelkode)
Denne funksjonen trykker på inngangsparametertasten. For å fullføre operasjonen, bør nøkkelutløsermetoden brukes.
Følg kodebiten nedenfor:
r.keyPress(KeyEvent.VK_CONTROL); r.keyPress(KeyEvent.VK_V);
Her, i kodebiten ovenfor, trykker vi bare CTRL + V. Metoden KeyEvent er assosiert med andre taster som er tilgjengelige for tastaturet vårt. Man kan prøve dem alle.
Offentlig ugyldig nøkkelRelease (int nøkkelkode)
Denne metoden frigjør inngangsparameternøkkelen. Dette er etter operasjonen til tastetrykkmetoden.
Følg kodebiten nedenfor:
r.keyRelease(KeyEvent.VK_V); r.keyRelease(KeyEvent.VK_CONTROL);
Her i kodebiten ovenfor frigjør vi bare CTRL + V. På samme måte som nevnt ovenfor, er metoden KeyEvent også assosiert med andre taster som er tilgjengelige for tastaturet vårt. Man kan prøve dem alle.
# 2) Musfunksjoner
Musfunksjonalitetene omhandler å simulere forskjellige operasjoner av musen.
Offentlig ugyldig mouseMove (int x, int y)
Her bestemmer de to parametrene koordinatene til skjermen. Når vi gir koordinatene, beveger musen seg til punktet for de angitte koordinatene på skjermen.
Følg den gitte kodebiten:
robot.mouseMove (0, 900);
Her er posisjonen til x-parameteren 0, og y-parameteren er 900. Så musen vil flytte til det punktet. Man kan gjøre en feil- og prøvemetode for å flytte til de forskjellige posisjonene på skjermen.
Offentlig ugyldig musTrykk på (int-knappene)
Man kan forestille seg denne funksjonaliteten med keyPress-funksjonalitet for å få en klar oppfatning. Denne metoden simulerer mousePress-funksjoner.
Følg kodebiten nedenfor:
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 seg denne funksjonaliteten med keyPress-funksjonalitet for å få en klar oppfatning. Denne metoden simulerer mousePress-funksjoner.
Følg kodebiten nedenfor:
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
Merk :Det er flere andre metoder tilgjengelige for leting. Men metodene ovenfor er de mest brukte. Men for å utforske andre metoder kan man søke etter Robot Java-klasse i Oracle docs.
Bruk av robotklasse i Java
Når og hvor kan vi bruke Robot Class i Java for å forbedre funksjonaliteten effektivt i et automatiseringsrammeverk?
Som vi alle vet at Selen kan brukes til å automatisere webapplikasjoner. Disse webapplikasjonene i Selen bruker det underliggende webobjektet (locators) til webappen for å bestemme posisjonen på websiden og operere deretter. Nå i visse tilfeller ser vi at vi trenger å håndtere popup-vindu for autentisering av vinduer eller andre popup-vinduer mens vi automatiserer på Windows-operativsystemet.
Selen kan ikke automatisere Windows-handlinger, men vi kan bruke Robot Class i Java til å utføre oppgaven.
Java Robot Class Eksempler
Eksempel 1: Bruke Robot Class til å automatisere noen Windows-funksjoner
Noen ganger kan en hvilken som helst liten del / modul av hele webapplikasjonen være designet med blits. Vi kan bruke Robot-klassen til å håndtere den delen. Siden webobjekter forblir skjulte for den delen som er designet i flash.
typer funksjoner c ++
En annen viktig funksjon som kan automatiseres ved hjelp av Robot Class i Java er Rich Text Editors, som noen ganger forblir innebygd i webapplikasjoner. Det er flere operasjonsfunksjoner i RTF-redaktører som er ganske enkle å automatisere ved hjelp av denne klassen.
Eksempel 2: Bruker robotklasse for å automatisere RTF-felt
Merk :Det er andre open source-verktøy tilgjengelig i markedet som Auto IT (spesielt designet for å automatisere Windows GUI), Sikuli (verktøy for bildebehandling) osv. for å utføre lignende oppgaver.
Dette stemmer, men Robot Class i Java kommer med JDK. Dermed trenger vi ikke noe annet verktøy å installere, dette er en rett fordel hvis man bruker et Java-basert automatiseringsrammeverk.
Automatisering av RTF-felt
Eksempelbilde:
Eksempel på utdrag:
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 har to funksjoner i RTF-redaktørene blitt automatisert ved hjelp av fet og kursiv ikon.
Automatisering av noen Windows-funksjoner
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(); } } }
Denne kodebiten behandler vanligvis rett fra startikon til visning av systemkonfigurasjonen. Ved å bruke et lignende konsept kan man også håndtere windows popup-generering mens man starter eller i mellom drift på en webside.
Tips for å innlemme robot-Java i eksisterende Java + Selen-rammeverk
Nå skal vi se hvordan vi kan modifisere ovennevnte kodestykker slik at vi kan ta imot det samme i et eksisterende Selen + Java-rammeverk.
Vær oppmerksom på at dette er et konsept, og det er mange andre måter å oppnå det samme på. Vi kan videreutvikle / modifisere dette konseptet for å møte forretningsbehovene som kan variere fra prosjekt til prosjekt.
Først oppretter du en klasse som inneholder alle vanlige eller tilgjengelige Robot-klasser tilgjengelige metoder, slik at når det er nødvendig kan vi bruke disse metodene til andre klasser der vi skriver testtilfeller.
Nedenfor viser kodebiter 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 tatt noen få metoder, man kan på samme måte legge til andre metoder i henhold til deres prosjektbehov.
Hver metode er festet til en switch-sak, slik at case-søkeordet kan brukes når og hvor det er nødvendig.
La oss nå se hvordan vi kan transformere koden som vi har skrevet for å automatisere RTF-editor:
Se kodebiten nedenfor for å forstå at:
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 oppretter objektet til CommonRobotMethods-klassen i seleniumFramework-klassen og får tilgang til metodene som er definert i CommonRobotMethods-klassen via. Bytt nøkkelord definert i CommonRobotMethods-klassen.
Her har vi laget et grensesnitt for å skrive ned alle inngangene som kan eksternaliseres. Men man kan dele og skrive i excel / egenskaper eller grensesnitt i henhold til deres komfortnivå 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'; }
Konklusjon
Forhåpentligvis er hvordan du bruker Robot Class innen et Selenium + Java-rammeverk klart nå. Vi ønsker at alle synes denne artikkelen er interessant og nyttig for å lære konseptet.
Anbefalt lesing
- Agurk Selen Tutorial: Agurk Java Selen WebDriver Integration
- Java Basics: Java Syntax, Java Class og Core Java Concepts
- Utforsk det essensielle av Java i selen med eksempler
- Integrering av selen med JMeter
- Java-skannerklasseopplæring med eksempler
- Java Array Class Tutorial - java.util.Arrays Class med eksempler
- Hva er Java Vector | Java Vector Class Tutorial med eksempler
- Java-grensesnitt og abstrakt klasseopplæring med eksempler