Класс роботов в Selenium Webdriver

Содержание:

Anonim

Класс роботов

Класс Robot в Selenium используется для автоматического тестирования реализаций платформы Java. Он генерирует события ввода в собственных системах для автоматизации тестирования, самозапускаемых демонстраций и других приложений, где пользователям требуется контроль над мышью и клавиатурой. Класс роботов легко реализовать, и его можно легко интегрировать с автоматизированной структурой.

Почему класс роботов?

Класс Robot используется в Selenium, потому что в некоторых тестах автоматизации Selenium пользователям требуется контроль над клавиатурой или мышью для взаимодействия с окнами ОС, такими как всплывающие окна загрузки, всплывающие окна печати и т. Д., И собственные приложения, такие как блокнот, калькулятор и т. Д. Selenium Webdriver не может обрабатывать эти всплывающие окна / приложения, поэтому в версии 1.3 Java был представлен класс робота, который может обрабатывать всплывающие окна / приложения ОС.

В этом руководстве вы узнаете,

  • Преимущества класса роботов
  • Документация по классу роботов
  • Общие сведения о внутренних методах и использовании класса роботов
  • Как выполнить код класса робота с помощью testNG
  • Недостатки класса роботов

Преимущества класса роботов

  1. Класс роботов может имитировать событие клавиатуры и мыши
  2. Robot Class может помочь в загрузке / скачивании файлов при использовании веб-драйвера Selenium.
  3. Класс роботов может быть легко интегрирован с текущей средой автоматизации (ключевой, управляемой данными или гибридной)

Что такое документация по классам роботов?

Документация 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);// нажмите клавишу ввода на клавиатуре, чтобы выполнить выбранное действие}}

Посмотрите это видео, чтобы увидеть его в действии

Недостатки класса роботов

У конструкции робота есть несколько недостатков, перечисленных ниже:

  1. Событие ключевого слова / мыши будет работать только в текущем экземпляре Window. Например, предположим, что код выполняет какое-либо событие класса робота, и во время выполнения кода пользователь переместился на какой-либо другой экран, тогда на этом экране произойдет событие ключевого слова / мыши.
  2. Большинство методов, таких как mouseMove, зависят от разрешения экрана, поэтому есть вероятность, что код, работающий на одном компьютере, может не работать на другом.

Резюме

Класс робота в пакете AWT используется для генерации событий клавиатуры / мыши для взаимодействия с окнами ОС и собственными приложениями.

Основная цель Robot - поддержка сборки проекта автоматизированных тестов селена на платформе Java.

Эта статья предоставлена ​​Рамандипом Сингхом, инженером по автоматизации тестирования в ведущей MNC.