Класс роботов в Selenium Вебдрайвер
Что такое класс роботов? Selenium?
Класс роботов in Selenium используется для автоматического тестирования реализаций Java платформа. Он генерирует события ввода в собственных системах для автоматизации тестирования, самозапускаемых демонстраций и других приложений, где пользователям необходим контроль над мышью и клавиатурой. Класс робота легко реализовать и легко интегрировать с автоматизированной структурой.
Почему класс роботов?
Класс роботов используется в Selenium потому что в определенных Selenium при тестировании автоматизации пользователям необходимо управлять клавиатурой или мышью для взаимодействия с окнами ОС, например, всплывающими окнами загрузки, всплывающими окнами печати и т. д., а также собственными приложениями, такими как блокнот, калькулятор и т. д. Selenium Webdriver не может обрабатывать эти всплывающие окна/приложения, поэтому в Java В версии 1.3 был представлен класс роботов, который может обрабатывать всплывающие окна/приложения ОС.
Документация класса роботов
Территория Документация класса роботов in Selenium помогает пользователям понять базовое определение, синтаксис и использование всех методов и функций, доступных в классе роботов в Java пакет АВТ. Пользователи могут просмотреть документацию на официальный 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 (см. 2, отмеченные на изображении выше).
Методы класса роботов в Selenium и использование
Методы класса робота можно использовать для взаимодействия с событиями клавиатуры/мыши при автоматизации браузера. Альтернативно AutoIT можно использовать, но его недостатком является то, что он генерирует исполняемый файл (exe), который будет работать только в Windows, поэтому это не лучший вариант для использования.
Некоторые часто используемые методы класса роботов во время веб-автоматизации:
Метод 1: нажатие клавиши():
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
- Давайте возьмем пример веб-сайта http://spreadsheetpage.com/index.php/file/C35/P10/, на котором после нажатия на веб-элемент (
.//a[@href=contains(text(),'yearly-calendar.xls']
) появится всплывающее окно загрузки ОС.
- Чтобы справиться с этим, мы используем класс Robot (путем создания экземпляра класса Robot в вашем коде, скажем, Робот-робот = новый робот()) . Класс роботов представлен в пакете 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 } }
Посмотрите это видео, чтобы увидеть его в действии
Как выполнить код класса робота, используя TestNG
Поскольку теперь вы знакомы с основными методами класса Robot, давайте разберемся с несколькими более сложными методами –
Предположим, вы не хотите использовать метод щелчка для нажатия на веб-элемент.
В таких случаях вы можете использовать метод mouseMove класса Robot.
Шаг 1) Метод mouseMove принимает координаты x и y в качестве параметров, например robot.mouseMove(630, 420) где 630 обозначает ось X, а 420 обозначает ось Y. Итак, этот метод переместит указатель мыши из текущего местоположения в указанную точку пересечения x и y.
Шаг 2) Далее нам нужно нажать кнопку мыши. Мы можем использовать метод мышьНажмите " У аборигенов 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. Вам нужно импортировать аннотацию Test для testNG. После того, как все будет сделано, просто щелкните правой кнопкой мыши по коду программы и щелкните Run As, затем щелкните TestNG… и вы увидите, что код начнет выполняться с использованием API testNG.
Вот код
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 } }
Посмотрите это видео, чтобы увидеть его в действии
Преимущества класса роботов
- Класс робота может имитировать событие клавиатуры и мыши.
- Класс робота может помочь в загрузке/скачивании файлов при использовании веб-драйвера селена.
- Класс робота можно легко интегрировать с существующей платформой автоматизации (ключевой, управляемой данными или гибридной).
Недостатки класса роботов
Платформа робота имеет несколько недостатков, упомянутых ниже:
- Событие ключевого слова/мыши будет работать только в текущем экземпляре Window. Например, предположим, что код выполняет какое-либо событие класса робота, и во время выполнения кода пользователь перешел на какой-то другой экран, тогда на этом экране произойдет событие ключевого слова/мыши.
- Большинство методов, таких как mouseMove, зависят от разрешения экрана, поэтому может быть вероятность, что код, работающий на одном компьютере, может не работать на другом.
Резюме
Класс робота в пакете AWT используется для генерации событий клавиатуры/мыши для взаимодействия с окнами ОС и собственными приложениями.
Основная цель Robot — поддержка проекта автоматизированных тестов Selenium, встроенного в Java Платформа