robot class selenium webdriver with java
Този урок обяснява употреби, примери и функции на клас робот в Java и неговата интеграция с Selenium Framework:
Роботът Java е Робот клас в Java Пакет AWT. Обикновено се използва за симулиране на операции с клавиатура и мишка в реално време, които правим ръчно.
Основната цел на Robot Class в Java е автоматизация. Красотата е, че може лесно да се интегрира с настоящата рамка за автоматизация, за да увеличи обхвата си.
Какво ще научите:
- Клас робот в Java
- Заключение
Клас робот в Java
В този урок ще научим за интеграцията на Selenium с Robot Class в Java, но като цяло Java Robot Class може да се използва във всяка рамка за автоматизация, изградена на Java.
Симулиране на функционалности от клас робот
Има много функционалности на Robot Class в Java, изброени по-долу са някои забелязани методи, свързани с тях:
# 1) Функции на клавиатурата
Клавиатурните функционалности на класа Robot обикновено се занимават със симулация на различни клавиши, налични в клавиатурите и техните операции.
Public void keyPress (int keycode)
Тази функция натиска клавиша за входен параметър. За завършване на операцията трябва да се използва методът за освобождаване на ключ.
Следвайте долния кодов фрагмент:
r.keyPress(KeyEvent.VK_CONTROL); r.keyPress(KeyEvent.VK_V);
Тук, в горния кодов фрагмент, ние просто натискаме CTRL + V. Методът KeyEvent е свързан с други клавиши, достъпни за нашата клавиатура. Човек може да опита всички тях.
Public void keyRelease (int keycode)
Този метод освобождава ключа за входния параметър. Това е операция след метода на натискане на клавиш.
Следвайте долния кодов фрагмент:
r.keyRelease(KeyEvent.VK_V); r.keyRelease(KeyEvent.VK_CONTROL);
Тук в горния кодов фрагмент ние просто пускаме CTRL + V. По същия начин, както беше посочено по-горе, методът KeyEvent е свързан и с други клавиши, достъпни за нашата клавиатура. Човек може да опита всички тях.
# 2) Функции на мишката
Функционалностите на мишката се занимават със симулиране на различни операции на мишката.
Public void mouseMove (int x, int y)
Тук двата параметъра определят координатите на екрана. След като дадем координатите, мишката се премества в точката на дадените координати на екрана.
Следвайте дадения кодов фрагмент:
robot.mouseMove (0, 900);
Тук позицията на параметъра x е 0, а параметърът y е 900. Така че мишката ще се премести до тази точка. Може да се направи метод за грешка и проба, за да се премести в различните позиции на екрана.
Public void mousePress (int бутони)
Човек може да си представи тази функционалност с функционалности keyPress, за да получи ясна концепция. Този метод симулира функции на mousePress.
Следвайте долния кодов фрагмент:
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
Публично пусто мишка Освобождаване (бутони int)
Човек може да си представи тази функционалност с функционалности keyPress, за да получи ясна концепция. Този метод симулира функции на mousePress.
Следвайте долния кодов фрагмент:
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
Забележка :Налични са няколко други метода за изследване. Но горните методи са най-често използваните. За да се изследват други методи обаче, човек може да потърси клас Java Robot в Oracle docs.
Използване на клас робот в Java
Кога и къде можем да използваме Robot Class в Java, за да подобрим ефективно функционалността в рамка за автоматизация?
Както всички знаем, че Selenium може да се използва за автоматизиране на уеб приложения. Тези уеб приложения в Selenium използват основния уеб обект (локатори) на уеб приложението, за да определят позицията на уеб страницата и да работят съответно. Сега в определени случаи виждаме, че трябва да обработваме изскачащия прозорец за удостоверяване на Windows или други изскачащи прозорци, докато автоматизираме в операционната система Windows.
Selenium не може да автоматизира действията на Windows, но можем да използваме Robot Class в Java, за да изпълним задачата.
Примери за клас Java Robot
Пример 1: Използване на клас робот за автоматизиране на някои функционалности на Windows
Понякога всяка малка част / модул от цялото уеб приложение може да бъде проектирана флаш. Можем да използваме класа Robot, за да се справим с тази част. Тъй като уеб обектите остават скрити за частта, проектирана във флаш.
пример за сортиране на избор c ++
Друга важна функция, която може да бъде автоматизирана с помощта на Robot Class в Java, е Rich Text Editor, които понякога остават вградени в уеб приложения. Има няколко оперативни функции в RTF редакторите, което е доста лесно да се автоматизира с помощта на този клас.
Пример 2: Използване на Robot Class за автоматизиране на RTF полета
Забележка :На пазара има и други инструменти с отворен код като Авто ИТ (специално проектиран за автоматизиране на GUI на windows), Sikuli (инструмент за обработка на изображения) и др. за изпълнение на подобни задачи.
Това е вярно, но Robot Class в Java идва с JDK. По този начин не се изисква друг инструмент за инсталиране, това е пряко предимство, ако се използва базирана на Java рамка за автоматизация.
Автоматизиране на RTF полета
Примерна снимка:
Примерен фрагмент:
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(); } }
Тук две функционалности на RTF редакторите са автоматизирани с помощта на иконата на получер и курсив.
Автоматизиране на някои функционалности на 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(); } } }
Този кодов фрагмент обикновено се занимава с десния старт от иконата за старт до преглеждането на системната конфигурация. Използвайки подобна концепция, човек може да се справи и с генериране на изскачащи прозорци по време на иницииране или между операция на уеб страница.
Съвети за включване на робот Java в съществуващата рамка Java + Selenium
Сега ще видим как да модифицираме демонстрираното по-горе парче кодове, така че да можем да го съберем в съществуваща рамка на Selenium + Java.
Моля, обърнете внимание, че това е концепция и има много други начини да постигнете същото. Можем допълнително да разширим / модифицираме тази концепция, за да отговорим на бизнес нуждите, които могат да варират от проект до проект.
Първо, създайте клас, който ще съхранява всички общи или предоставени от Robot клас методи, така че когато е необходимо, да можем да използваме тези методи за други класове, в които пишем тестови случаи.
По-долу кодови фрагменти демонстрират това:
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; } }
Тук сме взели няколко метода, като по подобен начин може да добавите и други методи според нуждите на проекта.
Всеки метод е прикрепен към един случай на превключване, така че ключовата дума case може да се използва, когато и където е необходимо.
Сега нека видим как можем да трансформираме кода, който сме написали, за да автоматизираме RTF редактора:
Вижте долния кодов фрагмент, за да разберете това:
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(); } } }
Създаваме обекта на класа CommonRobotMethods вътре в класа seleniumFramework и осъществяваме достъп до методите, дефинирани в класа CommonRobotMethods чрез. Превключете ключовите думи, дефинирани в класа CommonRobotMethods.
Тук създадохме интерфейс, за да запишем всички входове, които могат да бъдат екстернализирани. Но човек може да разделя и пише в Excel / свойства или интерфейс според нивото на комфорт или бизнес нуждите си.
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'; }
Заключение
Надяваме се, че сега е ясно как да използваме клас робот в рамките на Selenium + Java. Пожелаваме на всички тази статия да бъде интересна и полезна за изучаването на концепцията.
Препоръчително четене
- Урок за краставици селен: Интеграция на краставица Java Selenium WebDriver
- Основи на Java: Синтаксис на Java, клас Java и основни концепции на Java
- Разгледайте основите на Java в селен с примери
- Интеграция на селен с JMeter
- Урок за клас Java Scanner с примери
- Java Array Class Tutorial - java.util.Arrays Class с примери
- Какво е Java Vector | Урок за Java Vector Class с примери
- Урок за интерфейс на Java и абстрактен клас с примери