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

Що таке Robot Class Selenium?

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

Чому Robot Class?

Клас роботи використовується в Selenium оскільки, в певних Selenium тести автоматизації, користувачам потрібен контроль над клавіатурою або мишею для взаємодії з вікнами ОС, такими як спливаючі вікна завантаження, спливаючі вікна друку тощо, а також рідними програмами, такими як блокнот, калькулятор тощо. 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 Class (див. 2, позначені на зображенні вище).

Методи класу роботів в Selenium та використання

Методи Robot Class можна використовувати для взаємодії з подіями клавіатури/миші під час автоматизації браузера. В якості альтернативи AutoIT можна використовувати, але його недоліком є ​​те, що він генерує виконуваний файл (exe), який працюватиме лише у Windows, тому його не можна використовувати.

Деякі поширені та популярні методи Robot Class під час веб-автоматизації:

Спосіб 1: keyPress():

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 Class

  • Розглянемо приклад веб-сайту http://spreadsheetpage.com/index.php/file/C35/P10/, на якому після натискання веб-елемента (.//a[@href=contains(text(),'yearly-calendar.xls']) з’явиться спливаюче вікно завантаження ОС.
  • Щоб впоратися з цим, ми використовуємо клас Robot (шляхом створення екземпляра Robot Class у вашому коді, наприклад Робот робот = новий робот()) . Клас робота, представлений у пакеті 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	
     }	 
 }

Перегляньте це відео, щоб побачити це в дії

Як виконати код Robot Class за допомогою 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 або бібліотеки, на яку посилається 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	
    }	
}	

Перегляньте це відео, щоб побачити це в дії

Переваги Robot Class

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

Недоліки Robot Class

Фреймворк робота має кілька недоліків, зазначених нижче:

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

Підсумки

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

Основна мета Robot — підтримувати вбудовування проекту автоматизованих тестів Selenium Java платформа

Детальніше ЧИТАТИ