Класс роботов в Selenium Вебдрайвер

Что такое класс роботов? Selenium?

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

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

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

Документация класса роботов

Ассоциация Документация класса роботов in Selenium помогает пользователям понять базовое определение, синтаксис и использование всех методов и функций, доступных в классе роботов в пакете 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, отмеченную на изображении ниже).

Документация класса роботов

Здесь вы также можете увидеть все методы и интерфейсы класса 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

Поскольку теперь вы знаете об основных методах класса роботов, давайте разберемся еще в некоторых вопросах.plex методы –

Предположим, вы не хотите использовать метод щелчка для нажатия на веб-элемент.

В таких случаях вы можете использовать метод 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. Вам необходимо импортировать тестовую аннотацию testNG. Как только все будет готово, просто щелкните правой кнопкой мыши код программы и выберите «Запустить как», затем нажмите « 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	
    }	
}	

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

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

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

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

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

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

Итого

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

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