Почему класс роботов?
В некоторых тестах Selenium Automation необходимо управлять клавиатурой или мышью для взаимодействия с окнами ОС, такими как всплывающие окна «Загрузка», «Предупреждения», «Всплывающие окна печати» и т. Д., Или с приложениями операционной системы, такими как «Блокнот», «Skype», «Калькулятор» и т. Д.
Selenium Webdriver не может обрабатывать эти всплывающие окна / приложения ОС.
В Java версии 1.3 был представлен Robot Class. Robot Class может обрабатывать всплывающие окна / приложения ОС.
В этом уроке вы узнаете,
- Преимущества класса роботов
- Документация о классе роботов
- Понимание внутренних методов и использования Robot Class
- Как выполнить код класса робота с помощью testNG
- Недостатки класса роботов
Преимущества класса роботов
- Робот-класс может симулировать события клавиатуры и мыши
- Robot Class может помочь в загрузке / выгрузке файлов при использовании веб-драйвера selenium
- Robot Class может быть легко интегрирован с существующей средой автоматизации (ключевое слово, управляемое данными или гибридное)
Документация о классе роботов
Документация по Robot Class поможет вам понять основные определения, синтаксис и использование всех методов и функций, доступных в Robot Class. Вы можете просмотреть документацию на официальном веб-сайте 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, отмеченный на изображении ниже).
Здесь вы также можете увидеть все методы и интерфейсы класса роботов (см. 2, отмеченный на рисунке выше).
Понимание внутренних методов и использования Robot Class
Методы класса Robot могут использоваться для взаимодействия с событиями клавиатуры / мыши при выполнении автоматизации браузера. В качестве альтернативы можно использовать AutoIT , но его недостатком является то, что он генерирует исполняемый файл (exe), который будет работать только на окнах, поэтому он не является хорошим вариантом для использования.
Некоторые широко используемые методы Robot Class при веб-автоматизации:
- keyPress (): Пример: robot.keyPress (KeyEvent.VK_DOWN): этот метод с нажатой клавишей со стрелкой вниз на клавиатуре
- mousePress (): Пример : robot.mousePress (InputEvent.BUTTON3_DOWN_MASK): этот метод будет нажимать правой кнопкой мыши.
- mouseMove (): Пример : robot.mouseMove (point.getX (), point.getY ()): это переместит указатель мыши в указанные координаты X и Y.
- keyRelease (): Пример: robot.keyRelease (KeyEvent.VK_DOWN): этот метод с отпусканием клавиши со стрелкой вниз на клавиатуре
- mouseRelease (): Пример: robot.mouseRelease (InputEvent.BUTTON3_DOWN_MASK): этот метод будет отпускать правой кнопкой мыши
Пример кода для автоматизации общих случаев использования с использованием класса роботов
- Возьмем пример веб-сайта http://spreadsheetpage.com/index.php/file/C35/P10/, в котором после нажатия на веб-элемент ( .//a[@href=contains(text(),’yearly- calendar.xls ‘] ) появится всплывающее окно загрузки ОС.
- Для этого мы используем класс Robot (создавая экземпляр класса Robot в вашем коде, скажем, Robot robot = new Robot () ). Робот класс нас присутствует в пакете AWT JDK.
- Для нажатия клавиши со стрелкой вниз на клавиатуре мы используем ( robot.keyPress (KeyEvent.VK_DOWN))
- Нажать клавишу TAB на клавиатуре (мы используем robot.keyPress (KeyEvent.VK_TAB))
- Для нажатия клавиши Enter мы используем ( robot.keyPress (KeyEvent.VK_ENTER)).
Вот пример кода
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
Теперь вы знаете основные методы класса роботов, поэтому давайте разберемся с несколькими более сложными методами:
Предположим, вы не хотите использовать метод click для нажатия на веб-элемент.
В таких случаях вы можете использовать метод 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 или ссылка на библиотеку jar-файла TestNG.
TestNG maven зависимость:
<dependency> <groupId>org.testng</groupId> <artifactId>testng</artifactId> <version>6.1.1</version> </dependency>
После добавления Maven зависимости или файл JAR. Вам необходимо импортировать тестовую аннотацию testNG. Как только все это будет сделано, просто щелкните правой кнопкой мыши код программы и выберите Run As, затем нажмите 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 } }
Проверьте это видео, чтобы увидеть его в действии
Недостатки класса роботов
Робот каркас имеет несколько недостатков, упомянутых ниже:
- Ключевое слово / событие мыши будет работать только на текущем экземпляре Window. Например, предположим, что код выполняет любое событие класса робота, и во время выполнения кода пользователь перешел на какой-то другой экран, тогда на этом экране произойдет событие ключевого слова / мыши.
- Большинство методов, таких как mouseMove, зависят от разрешения экрана, поэтому существует вероятность того, что код, работающий на одном компьютере, может не работать на другом.
Резюме
Класс Robot в пакете AWT используется для генерации событий клавиатуры / мыши для взаимодействия с окнами ОС и собственными приложениями.
Основная цель Robot — поддержка сборки проектов автоматических тестов Selen на платформе Java.
Эта статья предоставлена Рамандипом Сингхом, инженером по автоматизации тестирования в ведущей MNC.