robot class selenium webdriver with java
Ovaj vodič objašnjava upotrebu, primjere i funkcije klase robota u Javi i njenu integraciju sa selenijskim okvirom:
Robot Java je Robot razred u Java AWT paket. Obično se koristi za simulaciju rada tipkovnice i miša u stvarnom vremenu koje radimo ručno.
Glavna svrha klase robota u Javi je automatizacija. Ljepota je toga što se lako može integrirati s trenutnim okvirom automatizacije kako bi se povećao doseg.
Što ćete naučiti:
Razred robota u Javi
U ovom uputstvu naučit ćemo o integraciji selena s Robot Classom na Javi, ali općenito, Java Robot Class može se koristiti u bilo kojem automatizacijskom okviru izgrađenom na Javi.
Simuliranje funkcionalnosti klase robota
Mnogo je funkcionalnosti klase robota u Javi, a dolje su navedene neke zapažene metode povezane s njima:
# 1) Funkcije tipkovnice
Funkcionalnosti tipkovnice klase Robot uglavnom se bave simulacijom različitih tipki dostupnih na tipkovnicama i njihovim operacijama.
Javni void keyPress (int keycode)
Ova funkcija pritiska tipku ulaznog parametra. Za dovršetak operacije treba koristiti metodu otpuštanja ključa.
Slijedite donji isječak koda:
r.keyPress(KeyEvent.VK_CONTROL); r.keyPress(KeyEvent.VK_V);
Ovdje, u gornjem isječku koda, samo pritisnemo CTRL + V. Metoda KeyEvent povezana je s drugim tipkama dostupnim našoj tipkovnici. Može se probati sve.
Javno void keyRelease (int keycode)
Ova metoda otpušta ključ ulaznog parametra. Ovo je nakon operacije pritiska na tipku.
Slijedite donji isječak koda:
r.keyRelease(KeyEvent.VK_V); r.keyRelease(KeyEvent.VK_CONTROL);
Ovdje u gornjem isječku koda, upravo puštamo CTRL + V. Slično kao što je gore rečeno, metoda KeyEvent također je povezana s drugim tipkama dostupnim našoj tipkovnici. Može se probati sve.
# 2) Funkcije miša
Funkcije miša bave se simuliranjem različitih operacija miša.
Javna void mouseMove (int x, int y)
Ovdje dva parametra određuju koordinate zaslona. Nakon što damo koordinate, miš se pomiče do točke zadanih koordinata zaslona.
Slijedite dani isječak koda:
robot.mouseMove (0, 900);
Ovdje je položaj x parametra 0, a y parametar 900. Dakle, miš će se pomaknuti do te točke. Za pomicanje na različite položaje zaslona mogu se primijeniti metode pogrešaka i proba.
Javni void mousePress (tipke int)
Možete zamisliti ovu funkcionalnost s keyPress funkcionalnostima kako biste stekli jasnu koncepciju. Ova metoda simulira mousePress funkcije.
Slijedite donji isječak koda:
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
Javno prazno puštanje miša (tipke int)
Možete zamisliti ovu funkcionalnost s keyPress funkcionalnostima kako biste stekli jasnu koncepciju. Ova metoda simulira mousePress funkcije.
Slijedite donji isječak koda:
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
Bilješka :Postoji nekoliko drugih metoda dostupnih za istraživanje. No, gore navedene metode su najčešće korištene. Međutim, za istraživanje drugih metoda može se potražiti klasu Robot Java u Oracle dokumentima.
Korištenje klase robota u Javi
Kada i gdje možemo koristiti Robot Class u Javi za učinkovito poboljšanje funkcionalnosti u okviru automatizacije?
Kao što svi znamo da se Selenium može koristiti za automatizaciju web aplikacija. Ove web aplikacije u seleniju koriste osnovni web objekt (lokatore) web aplikacije za određivanje položaja na web stranici i funkcioniraju u skladu s tim. Sada u određenim slučajevima vidimo da moramo rješavati skočni prozor za provjeru autentičnosti prozora ili bilo koji drugi skočni prozor za vrijeme automatskog izvršavanja operativnog sustava Windows.
Selenium ne može automatizirati radnje sustava Windows, ali za izvršavanje zadatka možemo koristiti Robot Class u Javi.
Primjeri klase Java Robot
Primjer 1: Korištenje klase robota za automatizaciju nekih funkcionalnosti sustava Windows
Ponekad bilo koji mali dio / modul cijele web aplikacije može biti dizajniran u flash-u. Za obradu tog dijela možemo koristiti klasu Robot. Budući da web objekti ostaju skriveni za dio dizajniran u flash-u.
najbolje web stranice za gledanje sinkroniziranih animea
Još jedna važna značajka koja se može automatizirati pomoću klase robota u Javi su uređivači bogatih tekstova, koji ponekad ostaju ugrađeni u web aplikacije. Postoji nekoliko operativnih funkcija u RTF urednicima što je vrlo lako automatizirati pomoću ove klase.
Primjer 2: Korištenje klase robota za automatizaciju RTF polja
Bilješka :Na tržištu su dostupni i drugi alati otvorenog koda Auto IT (posebno dizajniran za automatizaciju Windows GUI-ja), Sikuli (alat za obradu slika) itd. za postizanje sličnih zadataka.
To je istina, ali Robot Class u Javi dolazi s JDK. Stoga nam nije potreban bilo koji drugi alat za instalaciju, to je izravna prednost ako se koristi automatizacijski okvir zasnovan na Javi.
Automatizacija RTF polja
Primjer slike:
Primjer isječka:
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(); } }
Ovdje su dvije funkcionalnosti RTF urednika automatizirane pomoću ikone podebljano i kurziv.
Automatizacija nekih Windows funkcija
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(); } } }
Ovaj isječak koda uglavnom se bavi desnim počevši od ikone Start do pregledavanja konfiguracije sustava. Korištenjem sličnog koncepta također se može rukovati generiranjem skočnih prozora tijekom pokretanja ili između operacija na web stranici.
Savjeti za uključivanje robotske Java u postojeći Java + Selenium Framework
Sada ćemo vidjeti kako modificirati gore demonstrirani dio kodova tako da ih možemo smjestiti u postojeći okvir Selenium + Java.
Imajte na umu da je ovo koncept i postoji mnogo drugih načina da se to postigne. Ovaj koncept možemo dalje proširiti / modificirati kako bismo udovoljili poslovnim potrebama koje se mogu razlikovati od projekta do projekta.
Prvo stvorite klasu koja će sadržavati sve uobičajene ili dostupne metode klase Robot, tako da kad god je to potrebno, možemo ih koristiti u bilo kojoj drugoj klasi u kojoj pišemo test slučajeve.
Ispod isječci koda to pokazuju:
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; } }
Ovdje smo uzeli nekoliko metoda, a slično se mogu dodati i druge metode prema njihovim projektnim potrebama.
Svaka je metoda priključena na jedan preklopni slučaj, tako da se ključna riječ case može koristiti kad i gdje god je to potrebno.
Sada da vidimo kako možemo transformirati kod koji smo napisali za automatizaciju RTF uređivača:
Pogledajte donji isječak koda da biste shvatili sljedeće:
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(); } } }
Stvaramo objekt klase CommonRobotMethods unutar klase seleniumFramework i pristupamo metodama definiranim u klasi CommonRobotMethods putem. Prebaci ključne riječi definirane u klasi CommonRobotMethods.
Ovdje smo stvorili sučelje za zapis svih ulaza koji se mogu eksternalizirati. No, može se podijeliti i pisati u excel / svojstva ili sučelje prema njihovoj razini udobnosti ili poslovnim potrebama.
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'; }
Zaključak
Nadamo se da je sada jasno kako koristiti klasu robota u okviru Selenium + Java. Želimo da svima ovaj članak bude zanimljiv i koristan u učenju koncepta.
Preporučena literatura
- Vodič za krastavac selenij: Integracija Java Selenium WebDriver krastavaca
- Osnove Java: Java sintaksa, Java klasa i osnovni koncepti Java
- Istražite osnove Jave u selenu sa primjerima
- Integracija selena s JMeterom
- Vodič za razred Java Scannera s primjerima
- Java Array Class Tutorial - java.util.Arrays Class s primjerima
- Što je Java Vector | Vodič za Java Vector Class s primjerima
- Java sučelje i udžbenik klase sažetak sa primjerima