Клас роботів у селеновому веб-драйвері

Зміст:

Anonim

Клас роботів

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

Чому клас роботів?

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

У цьому підручнику ви дізнаєтесь,

  • Переваги класу роботів
  • Документація класу роботів
  • Розуміння внутрішніх методів та використання класу роботів
  • Як виконати код класу робота за допомогою testNG
  • Недоліки класу роботів

Переваги класу роботів

  1. Робот-клас може імітувати події клавіатури та миші
  2. Робот-клас може допомогти у завантаженні / завантаженні файлів під час використання веб-драйвера селену
  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, позначений на зображенні вище).

Розуміння внутрішніх методів та використання класу роботів

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

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

  • 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): Цей метод відпускає клацання правою кнопкою миші

Зразок коду для автоматизації типових випадків використання за допомогою Robot Class

  • Давайте візьмемо приклад веб-сайту http://spreadsheetpage.com/index.php/file/C35/P10/, де після натискання веб-елемента ( .//a[@href=contains(text(),'yearly- calendar.xls '] ) з’явиться спливаюче вікно завантаження ОС.
  • Для цього ми використовуємо клас Robot (шляхом створення екземпляра Robot Class у вашому коді скажімо Robot robot = new Robot () ). Клас роботів представлений нами в пакеті AWT від JDK.
  • Для натискання клавіші зі стрілкою вниз на клавіатурі ми використовуємо ( robot.keyPress (KeyEvent.VK_DOWN))
  • Щоб натиснути клавішу TAB на клавіатурі (ми використовуємо robot.keyPress (KeyEvent.VK_TAB))
  • Для натискання клавіші Enter ми використовуємо ( robot.keyPress (KeyEvent.VK_ENTER)).

Ось зразок коду

імпортувати java.awt.AWTException;імпортувати java.awt.Robot;імпортувати java.awt.event.KeyEvent;імпорт org.openqa.selenium.By;імпорт org.openqa.selenium.WebDriver;імпорт org.openqa.selenium.firefox.FirefoxDriver;клас Вправа1 {public static void main (String [] args) викидає AWTException, InterruptedException {Драйвер WebDriver = новий FirefoxDriver ();driver.get ("http://spreadsheetpage.com/index.php/file/C35/P10/"); // URL-адреса зразкаdriver.findElement (By.xpath (".// a [@ href = contains (text (), 'yearly-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);// натисніть клавішу 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 jar TestNG.

Залежність Maven від TestNG:

<залежність> org.testng  testng  6.1.1  

Після додавання залежності maven або файлу jar. Вам потрібно імпортувати тестову анотацію testNG. Як тільки все буде зроблено, просто клацніть правою кнопкою миші на коді програми та натисніть Запустити як, а потім натисніть TestNG

… І ви виявите, що код розпочне своє виконання за допомогою API testNG.

Ось код

імпортувати java.awt.AWTException;імпортувати java.awt.Robot;імпортувати java.awt.event.InputEvent;імпортувати java.awt.event.KeyEvent;імпорт org.openqa.selenium.WebDriver;імпорт org.openqa.selenium.firefox.FirefoxDriver;імпорт org.testng.annotations.Test;громадський клас Excersise1 {@ Тестпублічне статичне виконання порожнеч () викидає 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);// натисніть клавішу Enter на клавіатурі, щоб виконати вище вибрану дію}}

Перевірте це відео, щоб побачити його в дії

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

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

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

Резюме

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

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

Цю статтю надав Рамандіп Сінгх, який є інженером з автоматизації випробувань у провідному MNC.