robot class selenium webdriver with java
Ten samouczek wyjaśnia zastosowania, przykłady i funkcje klasy Robot w Javie oraz jej integrację z Selenium Framework:
Robot Java to Robot klasa w Jawa Pakiet AWT. Zwykle jest używany do symulacji operacji klawiatury i myszy w czasie rzeczywistym, które wykonujemy ręcznie.
Głównym celem klasy Robot w Javie jest automatyzacja. Piękno polega na tym, że można go łatwo zintegrować z obecną platformą automatyzacji, aby zwiększyć jej zasięg.
Czego się nauczysz:
- Klasa robota w języku Java
- Wniosek
Klasa robota w języku Java
W tym samouczku dowiemy się o integracji Selenium z Robot Class w Javie, ale generalnie Java Robot Class może być używana w dowolnym frameworku automatyzacji opartym na Javie.
Symulowanie funkcjonalności klasy robotów
W Javie istnieje wiele funkcji Robot Class, poniżej wymienione są niektóre metody z nimi związane:
# 1) Funkcje klawiatury
Funkcjonalności klawiatur klasy Robot dotyczą generalnie symulacji różnych klawiszy dostępnych w klawiaturach i ich operacji.
Public void keyPress (int keycode)
Ta funkcja naciska klawisz parametru wejściowego. Aby zakończyć operację, należy skorzystać z metody zwalniania klucza.
Postępuj zgodnie z poniższym fragmentem kodu:
r.keyPress(KeyEvent.VK_CONTROL); r.keyPress(KeyEvent.VK_V);
Tutaj, w powyższym fragmencie kodu, po prostu wciskamy CTRL + V. Metoda KeyEvent jest powiązana z innymi klawiszami dostępnymi dla naszej klawiatury. Można spróbować wszystkich.
Public void keyRelease (int keycode)
Ta metoda zwalnia klucz parametru wejściowego. To jest operacja po naciśnięciu klawisza.
Postępuj zgodnie z poniższym fragmentem kodu:
r.keyRelease(KeyEvent.VK_V); r.keyRelease(KeyEvent.VK_CONTROL);
Tutaj, w powyższym fragmencie kodu, właśnie zwalniamy CTRL + V. Podobnie jak wspomniano powyżej, metoda KeyEvent jest również powiązana z innymi klawiszami dostępnymi dla naszej klawiatury. Można spróbować wszystkich.
# 2) Funkcje myszy
Funkcjonalności myszy zajmują się symulowaniem różnych operacji myszy.
Public void mouseMove (int x, int y)
Tutaj te dwa parametry określają współrzędne ekranu. Po podaniu współrzędnych myszka przesuwa się do punktu o podanych współrzędnych ekranu.
Postępuj zgodnie z podanym fragmentem kodu:
robot.mouseMove (0, 900);
Tutaj pozycja parametru x wynosi 0, a parametru y 900. Tak więc myszka przesunie się do tego punktu. Można zrobić błąd i wykonać próbę, aby przejść do różnych pozycji ekranu.
Public void mousePress (przyciski int)
Można sobie wyobrazić tę funkcjonalność dzięki funkcjom keyPress, aby uzyskać jasną koncepcję. Ta metoda symuluje funkcje mousePress.
Postępuj zgodnie z poniższym fragmentem kodu:
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 (przyciski int)
Można sobie wyobrazić tę funkcjonalność dzięki funkcjom keyPress, aby uzyskać jasną koncepcję. Ta metoda symuluje funkcje mousePress.
Postępuj zgodnie z poniższym fragmentem kodu:
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
Uwaga :Istnieje kilka innych metod eksploracji. Ale powyższe metody są najczęściej używane. Jednak aby zbadać inne metody, można wyszukać klasę Robot Java w dokumentacji Oracle.
Wykorzystanie klasy Robot w Javie
Kiedy i gdzie możemy wykorzystać Robot Class w Javie, aby efektywnie zwiększyć funkcjonalność w ramach automatyzacji?
Jak wszyscy wiemy, Selenium można wykorzystać do automatyzacji aplikacji internetowych. Te aplikacje internetowe w Selenium używają bazowego obiektu internetowego (lokalizatorów) aplikacji internetowej do określenia pozycji na stronie internetowej i odpowiedniego działania. Teraz w niektórych przypadkach widzimy, że musimy obsługiwać wyskakujące okienka uwierzytelniania systemu Windows lub inne wyskakujące okienka podczas automatyzacji w systemie operacyjnym Windows.
Selenium nie może zautomatyzować działań systemu Windows, ale możemy użyć Robot Class w Javie, aby wykonać zadanie.
Przykłady klas robotów Java
Przykład 1: Używanie Robot Class do automatyzacji niektórych funkcji systemu Windows
Czasami dowolna mała część / moduł całej aplikacji internetowej może zostać zaprojektowany we flashu. Do obsługi tej części możemy użyć klasy Robot. Ponieważ obiekty internetowe pozostają ukryte dla części zaprojektowanej we flashu.
gdzie mogę oglądać anime za darmo online
Inną ważną funkcją, którą można zautomatyzować za pomocą Robot Class w Javie, są edytory tekstu sformatowanego, które czasami pozostają osadzone w aplikacjach internetowych. W edytorach RTF jest kilka funkcji operacyjnych, które można dość łatwo zautomatyzować za pomocą tej klasy.
Przykład 2: Używanie Robot Class do automatyzacji pól RTF
Uwaga :Na rynku dostępne są inne narzędzia typu open source, takie jak Auto IT (specjalnie zaprojektowany do automatyzacji GUI systemu Windows), Sikuli (narzędzie do przetwarzania obrazu) itp. do wykonywania podobnych zadań.
To prawda, ale klasa Robot w Javie jest dostarczana z JDK. Dlatego nie potrzebujemy żadnego innego narzędzia do zainstalowania, jest to prosta zaleta, jeśli używa się platformy automatyzacji opartej na Javie.
Automatyzacja pól RTF
Przykładowe zdjęcie:
Przykładowy fragment:
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(); } }
Tutaj dwie funkcje edytorów RTF zostały zautomatyzowane za pomocą ikony pogrubienia i kursywy.
Automatyzacja niektórych funkcji systemu 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(); } } }
Ten fragment kodu zazwyczaj zajmuje się od prawej, zaczynając od ikony startu do przeglądania konfiguracji systemu. Stosując podobną koncepcję można również obsługiwać generowanie okien pop-up podczas inicjowania lub pomiędzy operacjami na stronie internetowej.
Wskazówki dotyczące włączenia robota Java do istniejącej platformy Java + Selenium
Teraz zobaczymy, jak zmodyfikować pokazany powyżej fragment kodu, abyśmy mogli dostosować go do istniejącego frameworka Selenium + Java.
Zwróć uwagę, że jest to koncepcja i istnieje wiele innych sposobów na osiągnięcie tego samego. Możemy dalej rozszerzać / modyfikować tę koncepcję, aby sprostać potrzebom biznesowym, które mogą się różnić w zależności od projektu.
Najpierw utwórz klasę, która będzie zawierała wszystkie udostępnione metody klasy common lub Robot, tak aby w razie potrzeby można było wykorzystać te metody do innych klas, w których piszemy przypadki testowe.
Poniższe fragmenty kodu demonstrują to:
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; } }
Tutaj wzięliśmy kilka metod, podobnie można dodać inne metody zgodnie z ich potrzebami projektowymi.
Każda metoda jest dołączona do jednej obudowy przełącznika, więc słowo kluczowe case może być używane zawsze i wszędzie tam, gdzie jest to wymagane.
Zobaczmy teraz, jak możemy przekształcić kod, który napisaliśmy, aby zautomatyzować edytor RTF:
Zapoznaj się z poniższym fragmentem kodu, aby zrozumieć, ż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(); } } }
Tworzymy obiekt klasy CommonRobotMethods wewnątrz klasy seleniumFramework i uzyskujemy dostęp do metod zdefiniowanych w klasie CommonRobotMethods poprzez. Przełącz słowa kluczowe zdefiniowane w klasie CommonRobotMethods.
Tutaj stworzyliśmy interfejs do zapisywania wszystkich danych wejściowych, które mogą być uzewnętrznione. Ale można podzielić i pisać w programie Excel / właściwościach lub interfejsie zgodnie z ich poziomem komfortu lub potrzebami biznesowymi.
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'; }
Wniosek
Mamy nadzieję, że sposób wykorzystania Robot Class w ramach Selenium + Java jest teraz jasny. Życzymy wszystkim, aby ten artykuł był interesujący i pomocny w nauce koncepcji.
rekomendowane lektury
- Cucumber Selenium Tutorial: Cucumber Java Selenium Integracja WebDriver
- Podstawy języka Java: składnia języka Java, klasa języka Java i podstawowe pojęcia dotyczące języka Java
- Poznaj podstawy języka Java w selenie z przykładami
- Integracja Selenium z JMeter
- Samouczek klasy skanera Java z przykładami
- Java Array Class Tutorial - klasa java.util.Arrays z przykładami
- Co to jest wektor Java | Samouczek klasy wektorowej Java z przykładami
- Interfejs Java i samouczek klasy abstrakcyjnej z przykładami