robot class selenium webdriver with java
Denna handledning förklarar användningar, exempel och funktioner för robotklass i Java och dess integration med Selenium Framework:
Robot Java är en Robot klass i Java AWT-paket. Det används vanligtvis för att simulera tangentbords- och musåtgärder i realtid, vilket vi gör manuellt.
Huvudsyftet med robotklassen i Java är automatisering. Det fina med det är att det enkelt kan integreras med den nuvarande automatiseringsramen för att öka räckvidden.
Vad du kommer att lära dig:
Robotklass i Java
I den här handledningen lär vi oss om Selen-integration med Robot Class i Java men i allmänhet kan Java Robot Class användas i alla automatiseringsramar som bygger på Java.
Simulera funktioner i robotklassen
Det finns många funktioner i Robot Class i Java, listade nedan är några noterade metoder associerade med dem:
# 1) Tangentbordsfunktioner
Tangentbordsfunktionerna i robotklassen handlar vanligtvis om simulering av olika tangenter som finns i tangentborden och deras funktioner.
Offentlig ogiltig tangent Tryck (int-nyckelkod)
Denna funktion trycker på ingångsparametertangenten. För att slutföra operationen bör nyckelfrigöringsmetoden användas.
Följ kodavsnittet nedan:
r.keyPress(KeyEvent.VK_CONTROL); r.keyPress(KeyEvent.VK_V);
Här, i kodavsnittet ovan, trycker vi bara på CTRL + V. Metoden KeyEvent är associerad med andra tangenter som är tillgängliga för vårt tangentbord. Man kan pröva dem alla.
Public void keyRelease (int keycode)
Denna metod släpper inmatningsparameternyckeln. Detta är efter operationen med nyckeltrycksmetoden.
Följ kodavsnittet nedan:
r.keyRelease(KeyEvent.VK_V); r.keyRelease(KeyEvent.VK_CONTROL);
Här i kodavsnittet ovan släpper vi bara CTRL + V. På samma sätt som anges ovan är metoden KeyEvent också associerad med andra tangenter som är tillgängliga för vårt tangentbord. Man kan pröva dem alla.
# 2) Musfunktioner
Musfunktionerna handlar om att simulera olika operationer hos musen.
Offentlig ogiltig mouseMove (int x, int y)
Här bestämmer de två parametrarna skärmens koordinater. När vi väl har gett koordinaterna flyttar musen till punkten för de givna koordinaterna på skärmen.
Följ det angivna kodavsnittet:
robot.mouseMove (0, 900);
Här är x-parameterns position 0 och y-parametern 900. Så musen flyttar till den punkten. Man kan göra en fel- och testmetod för att flytta till de olika positionerna på skärmen.
Offentlig ogiltig musTryck på (int-knapparna)
Man kan föreställa sig denna funktionalitet med keyPress-funktioner för att få en tydlig uppfattning. Denna metod simulerar mousePress-funktioner.
Följ kodavsnittet nedan:
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-knappar)
Man kan föreställa sig denna funktionalitet med keyPress-funktioner för att få en tydlig uppfattning. Denna metod simulerar mousePress-funktioner.
Följ kodavsnittet nedan:
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
Notera :Det finns flera andra metoder tillgängliga för utforskning. Men ovanstående metoder används oftast. Men för att utforska andra metoder kan man söka efter Robot Java-klass i Oracle docs.
Användning av robotklass i Java
När och var kan vi använda Robot Class i Java för att förbättra funktionaliteten effektivt i ett automatiseringsramverk?
Som vi alla vet kan Selen användas för att automatisera webbapplikationer. Dessa webbapplikationer i Selen använder webbappens underliggande webbobjekt (lokaliserare) för att bestämma positionen på webbsidan och fungera därefter. Nu i vissa fall ser vi att vi måste hantera fönster för autentisering av fönster eller andra fönster som förekommer medan vi automatiserar på Windows-operativsystemet.
Selen kan inte automatisera Windows-åtgärder men vi kan använda Robot Class i Java för att utföra uppgiften.
Java Robot Class Exempel
Exempel 1: Använda Robot Class för att automatisera vissa Windows-funktioner
Ibland kan alla små delar / moduler i hela webbapplikationen utformas i flash. Vi kan använda robotklassen för att hantera den delen. Eftersom webbobjekt förblir dolda för den del som är designad i flash.
c ++ datum och tid
En annan viktig funktion som kan automatiseras med Robot Class i Java är Rich Text Editors, som ibland förblir inbäddade i webbapplikationer. Det finns flera operativa funktioner i RTF-redigerare som är ganska enkla att automatisera med den här klassen.
Exempel 2: Använda robotklass för att automatisera RTF-fält
Notera :Det finns andra öppen källkodsverktyg tillgängliga på marknaden som Auto IT (speciellt utformad för att automatisera Windows GUI), Sikuli (bildbehandlingsverktyg), etc. för att utföra liknande uppgifter.
Detta är sant men Robot Class i Java levereras med JDK. Således behöver vi inte installera något annat verktyg, detta är en rak fördel om man använder ett Java-baserat automatiseringsramverk.
Automatisering av RTF-fält
Exempel på bild:
Exempel 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(); } }
Här har två funktioner i RTF-redigerarna automatiserats med hjälp av fetstil och kursiv ikon.
Automatisera vissa 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(); } } }
Detta kodavsnitt handlar i allmänhet om från startikonen till systemkonfigurationen. Med ett liknande koncept kan man också hantera fönster som skapar popup-fönster under initiering eller mellan drift på en webbsida.
Tips för att införliva robot-Java i befintligt Java + Selen-ramverk
Nu ska vi se hur man kan ändra den ovan demonstrerade biten av koder så att vi kan rymma samma i ett befintligt Selen + Java-ramverk.
Observera att detta är ett koncept och det finns många andra sätt att åstadkomma detsamma. Vi kan ytterligare utöka / modifiera detta koncept för att möta de affärsbehov som kan variera från projekt till projekt.
Skapa först en klass som kommer att innehålla alla vanliga metoder eller Robot-klass tillgängliga metoder så att när det behövs kan vi använda dessa metoder till andra klasser där vi skriver testfall.
Nedanstående kodavsnitt visar detta:
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; } }
Här har vi tagit några metoder, man kan på samma sätt lägga till andra metoder enligt deras projektbehov.
Varje metod är kopplad till ett switchväska, så att nyckelordet kan användas när och var som helst.
Låt oss nu se hur vi kan omvandla koden som vi har skrivit för att automatisera RTF-redigeraren:
Se kodavsnittet nedan för att förstå att:
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 skapar objektet för CommonRobotMethods-klassen inuti seleniumFramework-klassen och får åtkomst till metoderna som definieras i CommonRobotMethods-klassen via. Byt nyckelord som definierats i CommonRobotMethods-klassen.
Här har vi skapat ett gränssnitt för att skriva ner alla ingångar som kan externiseras. Men man kan dela och skriva i excel / egenskaper eller gränssnitt efter deras komfortnivå eller affärsbehov.
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'; }
Slutsats
Förhoppningsvis är det klart nu hur man använder Robot Class inom ett Selenium + Java-ramverk. Vi önskar att alla tycker att den här artikeln är intressant och hjälpsam för att lära sig konceptet.
Rekommenderad läsning
- Gurkselen-handledning: Gurka Java Selen WebDriver-integration
- Java Basics: Java Syntax, Java Class och Core Java Concepts
- Utforska de viktigaste delarna av Java i selen med exempel
- Integration av selen med JMeter
- Java Scanner-klasshandledning med exempel
- Java Array Class Tutorial - java.util.Arrays Class med exempel
- Vad är Java Vector | Java Vector Class Tutorial med exempel
- Java-gränssnitt och abstrakt klasshandledning med exempel