Класс роботов в 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	
    }	
}	

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

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

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

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

Платформа робота имеет несколько недостатков, упомянутых ниже:

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

Резюме

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

Основная цель Robot — поддержка проекта автоматизированных тестов Selenium, встроенного в Java Платформа