robot class selenium webdriver with java
Цей посібник пояснює використання, приклади та функції класу робота в Java та його інтеграцію з Selenium Framework:
Робот Java - це Робот класу в Java Пакет AWT. Зазвичай він використовується для імітації операцій на клавіатурі та миші в реальному часі, які ми робимо вручну.
Основною метою Роботокласу в Java є автоматизація. Краса цього полягає в тому, що його можна легко інтегрувати з поточною системою автоматизації, щоб збільшити його охоплення.
Що ви дізнаєтесь:
- Клас роботів на Java
- Висновок
Клас роботів на Java
У цьому посібнику ми дізнаємося про інтеграцію Selenium з Робочим Класом в Java, але загалом Клас Роботів Java можна використовувати в будь-якій системі автоматизації, побудованій на Java.
Імітація функціональних можливостей класу роботів
Існує багато функціональних можливостей класу роботів у Java, нижче наведено деякі відомі методи, пов’язані з ними:
# 1) Функціональні можливості клавіатури
Функціональні можливості клавіатури класу Robot, як правило, стосуються моделювання різних клавіш, доступних на клавіатурах, та їх роботи.
Public void keyPress (int key code)
Ця функція натискає клавішу вхідних параметрів. Для завершення операції слід використовувати метод відпускання ключа.
Дотримуйтесь наведеного нижче фрагмента коду:
r.keyPress(KeyEvent.VK_CONTROL); r.keyPress(KeyEvent.VK_V);
Тут, у наведеному вище фрагменті коду, ми просто натискаємо CTRL + V. Метод KeyEvent пов'язаний з іншими клавішами, доступними для нашої клавіатури. Можна спробувати їх усіх.
Public void keyRelease (int key code)
Цей метод звільняє ключ вхідного параметра. Це післяоперація до методу натискання клавіші.
Дотримуйтесь наведеного нижче фрагмента коду:
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
Public void mouseRelease (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-робота в документах Oracle.
Використання класу робота в Java
Коли і де ми можемо використовувати Robot Class в Java для ефективного покращення функціональності в рамках автоматизації?
Як ми всі знаємо, що Selenium можна використовувати для автоматизації веб-додатків. Ці веб-програми в Selenium використовують базовий веб-об’єкт (локатори) веб-програми, щоб визначити позицію на веб-сторінці та працювати відповідно. Зараз у деяких випадках ми бачимо, що нам потрібно обробляти спливаюче вікно автентифікації Windows або будь-яке інше спливаюче вікно під час автоматизації в операційній системі Windows.
Селен не може автоматизувати дії Windows, але ми можемо використовувати клас роботи в Java для виконання завдання.
Приклади класу роботів Java
Приклад 1: Використання Robot Class для автоматизації деяких функцій Windows
Іноді будь-яка невелика частина / модуль усього веб-додатку може бути спроектована блискавично. Ми можемо використовувати клас Robot для обробки цієї частини. Оскільки веб-об'єкти залишаються прихованими для частини, розробленої у флеш-пам'яті.
Як повернути масив назад
Ще однією важливою функцією, яку можна автоматизувати за допомогою Robot Class в Java, є редактори текстового тексту, які іноді залишаються вбудованими у веб-програми. У редакторах RTF є кілька операційних функцій, які досить легко автоматизувати за допомогою цього класу.
Приклад 2: Використання Robot Class для автоматизації полів RTF
Примітка :На ринку є й інші інструменти з відкритим кодом, наприклад Авто ІТ (спеціально розроблений для автоматизації графічного інтерфейсу Windows), Sikuli (інструмент обробки зображень) тощо для виконання подібних завдань.
Це правда, але клас роботів у 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.
Зверніть увагу, це концепція, і існує безліч інших способів досягти цього. Ми можемо додатково розширити / модифікувати цю концепцію, щоб задовольнити бізнес-потреби, які можуть відрізнятися від проекту до проекту.
По-перше, створіть клас, який буде містити всі загальноприйняті або доступні для роботи методи роботи, щоб, коли це буде потрібно, ми могли використовувати ці методи для будь-яких інших класів, де ми пишемо тестові кейси.
Нижче фрагменти коду демонструють це:
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 із прикладами
- Підручник з класу масивів Java - java.util.Arrays Class with Examples
- Що таке Java Java | Підручник з Java-класу з прикладами
- Інтерфейс Java та підручник з абстрактних класів із прикладами