Robot Class in Selenium Уебдрайвер
В какво е Robot Class Selenium?
Клас роботи in Selenium се използва за активиране на автоматизирано тестване за реализации на Java платформа. Той генерира входни събития в собствени системи за автоматизация на тестове, самоизпълняващи се демонстрации и други приложения, където потребителите се нуждаят от контрол над мишката и клавиатурата. Класът Robot е лесен за внедряване и може лесно да се интегрира с автоматизирана рамка.
Защо Robot Class?
Клас роботи се използва в Selenium защото, в определени Selenium тестове за автоматизация, потребителите се нуждаят от контрол върху клавиатура или мишка, за да взаимодействат с прозорци на операционната система, като изскачащи прозорци за изтегляне, изскачащи прозорци за печат и т.н. и собствени приложения като бележник, калкулатор и т.н. Selenium Webdriver не може да се справи с тези изскачащи прозорци/приложения, така че в Java версия 1.3, беше въведен клас робот, който може да обработва изскачащи прозорци/приложения на OS.
Документация за клас роботи
- Документация за клас роботи in Selenium помага на потребителите да разберат основната дефиниция, синтаксис и използване на всички методи и функции, налични в класа на роботи в Java AWT пакет. Потребителите могат да видят документацията на Официален Oracle уебсайт. Потребителите могат също така сами да създават документацията на своята локална машина.
За да създадете документацията на локална машина, следвайте стъпките по-долу-
Стъпка 1) Ще намерите файла src.zip в папката JDK. Копирайте src.zip и извлечете същото в някоя друга папка или директория (да речем D: или E:)
Стъпка 2) Извлечете src папка и отидете до (път до src папка)/src/java/awt
Стъпка 3) Копирайте текущото местоположение на папката awt и отворете командния ред.
Стъпка 4) В cmd променете местоположението на текущата си директория на папка awt и въведете „javadoc *.java“, както е показано по-долу
Изчакайте известно време системата да обработи, след като приключите, ще видите няколко HTML файла в папката awt.
Стъпка 5) Отворете index.html
Стъпка 6) Тук имате пълната документация на пакета awt, от лявата лента за навигация щракнете върху хипервръзката „Робот“ (вижте 1, отбелязано в изображението по-долу).
Тук можете също да видите всички методи и интерфейси на Robot Class (Вижте 2, отбелязани в горното изображение).
Методи на клас роботи в Selenium и Употреба
Методите на Robot Class могат да се използват за взаимодействие със събития на клавиатура/мишка, докато се извършва автоматизация на браузъра. Алтернативно AutoIT може да се използва, но недостатъкът му е, че генерира изпълним файл (exe), който ще работи само на Windows, така че не е добър вариант за използване.
Някои често и популярни използвани методи на Robot Class по време на уеб автоматизация:
Метод 1: keyPress():
robot.keyPress(KeyEvent.VK_DOWN): Този метод с натискане на клавиша със стрелка надолу на клавиатурата
Метод 2: mousePress():
robot.mousePress(InputEvent.BUTTON3_DOWN_MASK): Този метод ще натисне десния бутон на мишката.
Метод 3: mouseMove():
robot.mouseMove(point.getX(), point.getY()): Това ще премести показалеца на мишката до посочените координати X и Y.
Метод 4: keyRelease():
robot.keyRelease(KeyEvent.VK_DOWN): Този метод с освобождаване на клавиша със стрелка надолу на клавиатурата
Метод 5: mouseRelease():
robot.mouseRelease(InputEvent.BUTTON3_DOWN_MASK): Този метод ще освободи десния бутон на мишката
Примерен код за автоматизиране на обичайни случаи на употреба с помощта на Robot Class
- Да вземем пример за уеб сайт http://spreadsheetpage.com/index.php/file/C35/P10/, където след като щракнете върху уеб елемент (
.//a[@href=contains(text(),'yearly-calendar.xls']
) се появява изскачащ прозорец за изтегляне на ОС.
- За да се справим с това, ние използваме Robot class (като създадем екземпляр на Robot Class във вашия код, да речем Робот робот = нов робот()) . Класът на роботите ни присъства в пакета AWT на JDK.
Клавишен клавиш | Начин на доставка |
---|---|
За да натиснете клавиша със стрелка надолу | използваме (robot.keyPress(KeyEvent.VK_DOWN)) |
За да натиснете клавиша TAB | използваме (robot.keyPress(KeyEvent.VK_TAB)) |
За да натиснете клавиша Enter | използваме (robot.keyPress(KeyEvent.VK_ENTER)) |
Пример за клас робот в Selenium
import java.awt.AWTException; import java.awt.Robot; import java.awt.event.KeyEvent; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.firefox.FirefoxDriver; class Excercise1 { public static void main(String[] args) throws AWTException, InterruptedException { WebDriver driver = new FirefoxDriver(); driver.get("http://spreadsheetpage.com/index.php/file/C35/P10/"); // sample url driver.findElement(By.xpath(".//a[@href=contains(text(),'yearly-calendar.xls')]")).click(); Robot robot = new Robot(); // Robot class throws AWT Exception Thread.sleep(2000); // Thread.sleep throws InterruptedException robot.keyPress(KeyEvent.VK_DOWN); // press arrow down key of keyboard to navigate and select Save radio button Thread.sleep(2000); // sleep has only been used to showcase each event separately robot.keyPress(KeyEvent.VK_TAB); Thread.sleep(2000); robot.keyPress(KeyEvent.VK_TAB); Thread.sleep(2000); robot.keyPress(KeyEvent.VK_TAB); Thread.sleep(2000); robot.keyPress(KeyEvent.VK_ENTER); // press enter key of keyboard to perform above selected action } }
Вижте този видеоклип, за да го видите в действие
Как да изпълним кода на Robot Class с помощта на TestNG
Тъй като вече сте наясно с основните методи на Robot Class, така че нека разберем няколко по-сложни метода –
Да предположим, че не искате да използвате метод на кликване за щракване върху уеб елемент.
В такива случаи можете да използвате метода mouseMove на класа Robot.
Стъпка 1) Методът mouseMove приема координати x и y като параметри като robot.mouseMove(630, 420) където 630 означава оста x, а 420 означава оста y. И така, този метод ще премести показалеца на мишката от текущото местоположение до споменатата пресечна точка на x и y.
Стъпка 2) След това трябва да натиснете бутона на мишката. Можем да използваме метода mousePress като robot.mousePress(InputEvent.BUTTON1_DOWN_MASK) .
Стъпка 3) След натискане мишката трябва да бъде освободена. Можем да използваме robot.mouseRelease(InputEvent.BUTTON1_DOWN_MASK), за да освободите левия клик на мишката.
Изпълнение на код с помощта на testNG:
Изпълнение на код с помощта на Testng изисква maven зависимост от testNG или референтна библиотека от TestNG jar файл.
TestNG зависимост от maven:
<dependency> <groupId>org.testng</groupId> <artifactId>testng</artifactId> <version>6.1.1</version> </dependency>
След добавяне на зависимост от maven или jar файл. Трябва да импортирате тестова анотация на testNG. След като всичко е готово, просто щракнете с десния бутон върху програмния код и щракнете върху Изпълни като, след което щракнете върху TestNG… и ще откриете, че кодът ще започне да се изпълнява с помощта на testNG API.
Ето кода
import java.awt.AWTException; import java.awt.Robot; import java.awt.event.InputEvent; import java.awt.event.KeyEvent; import org.openqa.selenium.WebDriver; import org.openqa.selenium.firefox.FirefoxDriver; import org.testng.annotations.Test; public class Excersise1 { @Test public static void execution() throws InterruptedException, AWTException { WebDriver driver = new FirefoxDriver(); driver.manage().window().maximize(); driver.get("http://spreadsheetpage.com/index.php/file/C35/P10/"); // sample url Robot robot = new Robot(); robot.mouseMove(630, 420); // move mouse point to specific location robot.delay(1500); // delay is to make code wait for mentioned milliseconds before executing next step robot.mousePress(InputEvent.BUTTON1_DOWN_MASK); // press left click robot.mouseRelease(InputEvent.BUTTON1_DOWN_MASK); // release left click robot.delay(1500); robot.keyPress(KeyEvent.VK_DOWN); // press keyboard arrow key to select Save radio button Thread.sleep(2000); robot.keyPress(KeyEvent.VK_ENTER); // press enter key of keyboard to perform above selected action } }
Вижте този видеоклип, за да го видите в действие
Предимства на Robot Class
- Robot Class може да симулира събитие на клавиатура и мишка
- Robot Class може да помогне при качване/изтегляне на файлове при използване на селен уеб драйвер
- Robot Class може лесно да се интегрира с текущата рамка за автоматизация (ключова дума, управлявана от данни или хибридна)
Недостатъци на Robot Class
Рамката на робота има няколко недостатъка, споменати по-долу:
- Събитието за ключова дума/мишка ще работи само на текущия екземпляр на Window. Например да предположим, че код изпълнява произволно събитие от клас робот и по време на изпълнението на кода потребителят се е преместил на друг екран, тогава на този екран ще се появи събитие с ключова дума/мишка.
- Повечето от методите като mouseMove зависят от разделителната способност на екрана, така че може да има шанс кодът, работещ на една машина, да не работи на друга.
Oбобщение
Клас робот в пакета AWT се използва за генериране на събития от клавиатура/мишка за взаимодействие с прозорци на операционната система и собствени приложения.
Основната цел на Robot е да поддържа вграждането на проекти за автоматизирани тестове на селен Java платформа