robot class selenium webdriver with java
Овај водич објашњава употребу, примере и функције класе робота у Јави и њену интеграцију са Селениум Фрамеворк:
Робот Јава је Робот разред у Јава АВТ пакет. Обично се користи за симулацију операција тастатуре и миша у реалном времену које радимо ручно.
Главна сврха класе робота у Јави је аутоматизација. Лепота је у томе што се лако може интегрисати са тренутним оквиром аутоматизације како би се повећао досег.
Шта ћете научити:
Класа робота у Јави
У овом упутству ћемо научити о интеграцији селена са Робот Цласс у Јави, али генерално, Јава Робот Цласс може се користити у било ком оквиру аутоматизације изграђеном на Јави.
Симулирање функционалности класе робота
Постоје многе функционалности класе робота у Јави, а доле су наведене неке запажене методе повезане са њима:
# 1) Функције тастатуре
Функционалности тастатуре класе Робот углавном се баве симулацијом различитих тастера доступних на тастатури и њиховим операцијама.
Јавни воид кеиПресс (инт кеицоде)
Ова функција притиска тастер улазног параметра. Да бисте довршили операцију, треба користити метод отпуштања кључа.
Следите доњи исечак кода:
r.keyPress(KeyEvent.VK_CONTROL); r.keyPress(KeyEvent.VK_V);
Овде, у горњем исечку кода, само притиснемо ЦТРЛ + В. Метода КеиЕвент је повезана са другим тастерима доступним нашој тастатури. Може се пробати све.
Јавно воид кеиРелеасе (инт кеицоде)
Ова метода ослобађа кључ улазног параметра. Ово је операција методе притиска тастера.
Следите доњи исечак кода:
r.keyRelease(KeyEvent.VK_V); r.keyRelease(KeyEvent.VK_CONTROL);
Овде у горњем исечку кода, управо пуштамо ЦТРЛ + В. Слично као што је горе речено, метода КеиЕвент је такође повезана са другим тастерима доступним нашој тастатури. Може се пробати све.
# 2) Функције миша
Функције миша се баве симулацијом различитих операција миша.
Јавна воид моусеМове (инт к, инт и)
Овде два параметра одређују координате екрана. Једном када дамо координате, миш се помера у тачку задатих координата екрана.
Пратите дати фрагмент кода:
робот.моусеМове (0, 900);
Овде је положај параметра к 0, а параметар и 900. Дакле, миш ће се померити до те тачке. Може се применити метода грешке и пробног преласка на различите положаје екрана.
Јавни воид моусеПресс (инт дугмад)
Може се замислити ова функционалност са кеиПресс функционалностима како би се стекла јасна концепција. Ова метода симулира моусеПресс функције.
Следите доњи исечак кода:
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
Јавно воид моусеРелеасе (инт дугмад)
Може се замислити ова функционалност са кеиПресс функционалностима како би се стекла јасна концепција. Ова метода симулира моусеПресс функције.
Следите доњи исечак кода:
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
Белешка :Постоји неколико других метода доступних за истраживање. Али горње методе су најчешће коришћене. Међутим, да бисте истражили друге методе, у Орацле документима можете потражити класу Робот Јава.
Коришћење класе робота у Јави
Када и где можемо да користимо класу робота у Јави за ефикасно побољшање функционалности у оквиру аутоматизације?
Као што сви знамо да се Селениум може користити за аутоматизацију веб апликација. Ове веб апликације у селенијуму користе основни веб објекат (локаторе) веб апликације да би одредили положај на веб страници и радили у складу с тим. Сада у одређеним случајевима видимо да морамо да рукујемо искачућим прозорима за потврду идентитета или било којим другим искачућим прозорима док аутоматизујемо на оперативном систему Виндовс.
Селениум не може аутоматизовати Виндовс радње, али за извршење задатка можемо користити Робот Цласс у Јави.
Примери класе Јава Робот
Пример 1: Коришћење класе робота за аутоматизацију неких Виндовс функција
Понекад било који мали део / модул целокупне веб апликације може бити дизајниран флеш. За руковање тим делом можемо да користимо класу Робот. Пошто веб објекти остају скривени за део дизајниран у флешу.
Питања и одговори за интернетске услуге
Још једна важна карактеристика која се може аутоматизовати помоћу класе робота у Јави су уређивачи богатих текстова који понекад остају уграђени у веб апликације. Постоји неколико оперативних функција у РТФ уредницима, што је прилично лако аутоматизовати помоћу ове класе.
Пример 2: Коришћење класе робота за аутоматизацију РТФ поља
Белешка :На тржишту су доступни и други алати отвореног кода Ауто ИТ (посебно дизајниран за аутоматизацију Виндовс ГУИ-ја), Сикули (алат за обраду слика) итд. за постизање сличних задатака.
То је тачно, али Робот Цласс у Јави долази са ЈДК. Стога нам није потребан било који други алат за инсталацију, ово је директна предност ако се користи аутоматизовани оквир заснован на Јави.
Аутоматизација РТФ поља
Пример слике:
Пример исечка:
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(); } }
Овде су две функције РТФ уредника аутоматизоване помоћу иконе подебљано и курзив.
Аутоматизација неких Виндовс функција
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(); } } }
Овај исечак кода углавном се бави десним почев од иконе старта до прегледа системске конфигурације. Користећи сличан концепт, такође се може руковати генерирањем искачућих прозора током покретања или између операција на веб страници.
Савети за укључивање роботске Јава у постојећи Јава + Селениум Фрамеворк
Сада ћемо видети како да модификујемо горе демонстрирани део кодова тако да их можемо сместити у постојећи оквир Селениум + Јава.
Имајте на уму да је ово концепт и да постоји много других начина да се то постигне. Можемо даље проширити / модификовати овај концепт у складу са пословним потребама које се могу разликовати од пројекта до пројекта.
Прво створите класу у којој ће се налазити све уобичајене или роботске класе доступне методе тако да кад год је то потребно можемо да користимо те методе у било којој другој класи у којој пишемо тест случајеве.
Испод исечци кода то показују:
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; } }
Овде смо узели неколико метода, а слично можемо додати и друге методе у складу са њиховим пројектним потребама.
Свака метода је прикључена на један прекидач, тако да се кључна реч цасе може користити када и где год је то потребно.
Сада да видимо како можемо трансформисати код који смо написали за аутоматизацију РТФ уређивача:
Погледајте доњи исечак кода да бисте то разумели:
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(); } } }
Стварамо објекат класе ЦоммонРоботМетходс унутар класе селениумФрамеворк и приступамо методама дефинисаним у класи ЦоммонРоботМетходс путем. Пребаците кључне речи дефинисане у класи ЦоммонРоботМетходс.
Овде смо креирали интерфејс за запис свих улаза који се могу екстернализовати. Али можемо поделити и писати у екцел / својства или интерфејс у складу са њиховим нивоом удобности или пословним потребама.
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'; }
Закључак
Надамо се да је сада јасно како користити класу робота у оквиру Селениум + Јава. Желимо да свима овај чланак буде занимљив и користан у учењу концепта.
Препоручено читање
- Водич за краставац селениј: Интеграција Јава Селениум ВебДривер краставца
- Основе Јава-а: Јава синтакса, Јава Цласс и основни Јава концепти
- Истражите основе Јаве у селену са примерима
- Интеграција селена са ЈМетером
- Водич за класу Јава Сцаннер са примерима
- Јава Арраи Цласс Туториал - јава.утил.Арраис Цласс са примерима
- Шта је Јава Вецтор | Водич за Јава векторску класу са примерима
- Јава интерфејс и лекција са апстрактним часовима са примерима