Класс роботов
Класс Robot в Selenium используется для автоматического тестирования реализаций платформы Java. Он генерирует события ввода в собственных системах для автоматизации тестирования, самозапускаемых демонстраций и других приложений, где пользователям требуется контроль над мышью и клавиатурой. Класс роботов легко реализовать, и его можно легко интегрировать с автоматизированной структурой.
Почему класс роботов?
Класс Robot используется в Selenium, потому что в некоторых тестах автоматизации Selenium пользователям требуется контроль над клавиатурой или мышью для взаимодействия с окнами ОС, такими как всплывающие окна загрузки, всплывающие окна печати и т. Д., И собственные приложения, такие как блокнот, калькулятор и т. Д. Selenium Webdriver не может обрабатывать эти всплывающие окна / приложения, поэтому в версии 1.3 Java был представлен класс робота, который может обрабатывать всплывающие окна / приложения ОС.
В этом руководстве вы узнаете,
- Преимущества класса роботов
- Документация по классу роботов
- Общие сведения о внутренних методах и использовании класса роботов
- Как выполнить код класса робота с помощью testNG
- Недостатки класса роботов
Преимущества класса роботов
- Класс роботов может имитировать событие клавиатуры и мыши
- Robot Class может помочь в загрузке / скачивании файлов при использовании веб-драйвера Selenium.
- Класс роботов может быть легко интегрирован с текущей средой автоматизации (ключевой, управляемой данными или гибридной)
Что такое документация по классам роботов?
Документация Robot Class в Селен помогает пользователям понять основные определения, синтаксис и использование всех методов и функций , доступных в классе роботов в пакете 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, отмеченный на изображении ниже).
Здесь вы также можете увидеть все методы и интерфейсы класса роботов (см. 2, отмеченные на изображении выше).
Общие сведения о внутренних методах и использовании класса роботов
Методы класса роботов могут использоваться для взаимодействия с событиями клавиатуры / мыши при автоматизации браузера. В качестве альтернативы можно использовать AutoIT, но его недостаток заключается в том, что он создает исполняемый файл (exe), который будет работать только в Windows, поэтому это не лучший вариант для использования.
Некоторые часто используемые методы класса роботов во время веб-автоматизации:
- 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) выбрасывает AWTException, InterruptedException {Драйвер WebDriver = новый FirefoxDriver ();driver.get ("http://spreadsheetpage.com/index.php/file/C35/P10/"); // образец URLdriver.findElement (By.xpath (".// a [@ href = contains (text (), 'Annual-calendar.xls')]")). click ();Робот-робот = новый робот (); // Класс робота выдает исключение AWTThread.sleep (2000); // Thread.sleep выбрасывает InterruptedExceptionrobot.keyPress (KeyEvent.VK_DOWN); // нажмите клавишу со стрелкой вниз на клавиатуре для навигации и выберите переключатель СохранитьThread.sleep (2000); // сон использовался только для демонстрации каждого события отдельно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);// нажмите клавишу ввода на клавиатуре, чтобы выполнить выбранное действие}}
Посмотрите это видео, чтобы увидеть его в действии
Как выполнить код класса робота с помощью TestNG
Поскольку теперь вы знаете об основных методах класса роботов, давайте разберемся с несколькими более сложными методами -
Предположим, вы не хотите использовать метод щелчка для щелчка по веб-элементу.
В таких случаях вы можете использовать метод 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:
<зависимость>org.testng testng 6.1.1
После добавления зависимости maven или файла jar. Вам необходимо импортировать тестовую аннотацию testNG. Как только все будет сделано, просто щелкните правой кнопкой мыши программный код и нажмите «Запуск от имени», затем нажмите «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 {@Тестpublic static void execution () выбрасывает InterruptedException, AWTException {Драйвер WebDriver = новый FirefoxDriver ();driver.manage (). window (). maximize ();driver.get ("http://spreadsheetpage.com/index.php/file/C35/P10/"); // образец URLРобот-робот = новый робот ();robot.mouseMove (630, 420); // перемещаем указатель мыши в определенное местоrobot.delay (1500); // задержка заставляет код ждать указанные миллисекунды перед выполнением следующего шагаrobot.mousePress (InputEvent.BUTTON1_DOWN_MASK); // нажимаем левую кнопкуrobot.mouseRelease (InputEvent.BUTTON1_DOWN_MASK); // отпускаем левый щелчокrobot.delay (1500);robot.keyPress (KeyEvent.VK_DOWN); // нажмите клавишу со стрелкой на клавиатуре, чтобы выбрать радиокнопку СохранитьThread.sleep (2000);robot.keyPress (KeyEvent.VK_ENTER);// нажмите клавишу ввода на клавиатуре, чтобы выполнить выбранное действие}}
Посмотрите это видео, чтобы увидеть его в действии
Недостатки класса роботов
У конструкции робота есть несколько недостатков, перечисленных ниже:
- Событие ключевого слова / мыши будет работать только в текущем экземпляре Window. Например, предположим, что код выполняет какое-либо событие класса робота, и во время выполнения кода пользователь переместился на какой-либо другой экран, тогда на этом экране произойдет событие ключевого слова / мыши.
- Большинство методов, таких как mouseMove, зависят от разрешения экрана, поэтому есть вероятность, что код, работающий на одном компьютере, может не работать на другом.
Резюме
Класс робота в пакете AWT используется для генерации событий клавиатуры / мыши для взаимодействия с окнами ОС и собственными приложениями.
Основная цель Robot - поддержка сборки проекта автоматизированных тестов селена на платформе Java.
Эта статья предоставлена Рамандипом Сингхом, инженером по автоматизации тестирования в ведущей MNC.