Сікулі Підручник для Selenium Автоматизація
У чому Сікулі Selenium?
Sikuli це інструмент автоматизації тестування на основі графічного інтерфейсу з відкритим кодом. Він в основному використовується для взаємодії з елементами веб-сторінок і обробки спливаючих вікон. Sikuli використовує техніку «розпізнавання зображень» і «графічний інтерфейс керування» для взаємодії з елементами веб-сторінок і вікон, що спливають. У Sikuli всі веб-елементи беруться як зображення та зберігаються всередині проекту.
Як використовувати Сікулі з Selenium Веб-драйвер
Sikuli можна інтегрувати з веб-драйвером selenium за допомогою JAR-файлу Sikuli.
Нижче наведено послідовність дій для налаштування Sikuli за допомогою веб-драйвера selenium.
Крок 1) Завантажити файл Sikuli JAR із наведеної нижче URL-адреси та розпакуйте вміст файлу ZIP у папку.
https://mvnrepository.com/artifact/com.sikulix/sikulixapi/2.0.5
Крок 2) Створіть новий проект JAVA в Eclipse і додайте файл JAR до шляху збірки разом із файлами селену jar, клацнувши правою кнопкою миші на проекті -> Шлях збірки -> Налаштувати шлях збірки
Після того як ви додали файл JAR до шляху збірки проекту, можна використовувати класи, надані Sikuli.
Екранний клас у Сікулях
Клас екрану є базовим класом для всіх методів, наданих Sikuli. Клас Screen містить попередньо визначені методи для всіх операцій, які зазвичай виконуються над елементами екрана, як-от клацання, подвійне клацання, введення в текстове поле, наведення курсора тощо. Нижче наведено список методів, які зазвичай використовуються класом Screen.
Метод | Опис | синтаксис |
---|---|---|
Натисніть | Цей метод використовується для клацання елемента на екрані з використанням назви зображення як параметра. | Екран s = новий екран();
s.click(“QA.png”); |
doubleClick | Цей метод використовується для подвійного клацання елемента. Він приймає назву зображення як параметр. | Екран s = новий екран();
s.doubleClick(“QA.png”); |
тип | Цей метод використовується для надання вхідного значення елементу. Він приймає назву зображення та текст для надсилання як параметри. |
s.type(“QA.png”,”ТЕКСТ”); |
Наведіть курсор миші | Цей метод використовується для наведення курсора на елемент. Він приймає назву зображення як параметр. |
s.hover(“QA.png”); |
знайти | Цей метод використовується для пошуку певного елемента на екрані. Він приймає назву зображення як параметр. |
s.find(“QA.png”); |
Узорний клас у Сікулях
Клас шаблону використовується для пов’язування файлу зображення з додатковими атрибутами для унікальної ідентифікації елемента. Він приймає шлях зображення як параметр.
Шаблон p = новий шаблон («Шлях зображення»);
Нижче наведено найбільш часто використовувані методи класу Pattern.
Метод | Опис | синтаксис |
---|---|---|
getFileName | Повертає ім’я файлу, що міститься в об’єкті Pattern. |
Шаблон p = новий шаблон (“D:\Demo\QA.png”); String filename = p.getFileName(); |
аналогічний | Цей метод повертає новий об’єкт Pattern із заданим значенням схожості. Він приймає значення подібності від 0 до 1 як параметр. Sikuli шукає всі елементи, які потрапляють у вказаний діапазон подібності, і повертає новий об’єкт шаблону. |
Шаблон p1 = p.similar(0.7f); |
Точний | Цей метод повертає новий об’єкт шаблону зі схожістю, встановленою на 1. Він шукає лише точну відповідність зазначеного елемента. |
Шаблон p1 = p.exact(); |
Приклад коду для завантаження файлу за допомогою Sikuli
Наведений нижче код пояснює використання Sikuli для завантаження файлів у Firefox.
package com.sikuli.demo; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.sikuli.script.FindFailed; import org.sikuli.script.Pattern; import org.sikuli.script.Screen; import org.openqa.selenium.chrome.ChromeDriver; public class SikuliDemo { public static void main(String[] args) throws FindFailed { System.setProperty("webdriver.chrome.driver", "D:\\chromedriver.exe"); String filepath = "D:\\Guru99Demo\\Files\\"; String inputFilePath = "D:\\Guru99Demo\\Files\\"; Screen s = new Screen(); Pattern fileInputTextBox = new Pattern(filepath + "FileTextBox.PNG"); Pattern openButton = new Pattern(filepath + "OpenButton.PNG"); WebDriver driver; // Open Chrome browser driver = new ChromeDriver(); driver.get("https://demo.guru99.com/test/image_upload/index.php"); // Click on Browse button and handle windows pop up using Sikuli driver.findElement(By.xpath(".//*[@id='photoimg']")).click(); s.wait(fileInputTextBox, 20); s.type(fileInputTextBox, inputFilePath + "Test.docx"); s.click(openButton); // Close the browser driver.close(); } }
Пояснення коду:
Крок 1) Перший оператор передбачає встановлення шляху до виконуваного файлу драйвера для chrome.
System.setProperty("webdriver.chrome.driver", "D:\\ chromedriver.exe");
Крок 2) Використовуйте інструмент захоплення екрана, наприклад Snipping Tool щоб зробити знімки екрана спливаючого вікна «FileTextBox' і кнопку "Відкрити".
Ось як має виглядати ваш скріншот:-
Зображення для текстового поля введення файлу Windows і кнопки «Відкрити» зберігаються у «FileTextBox.PNG" і "OpenButton.PNG".
Sikuli використовує техніку Image Recognition для розпізнавання елементів на екрані. Він знаходить елементи на екрані виключно на основі їхніх зображень.
Приклад: якщо ви хочете автоматизувати операцію відкриття блокнота, вам потрібно зберегти зображення піктограми робочого столу для блокнота у файлі PNG і виконати на ньому операцію клацання.
У нашому випадку він розпізнає текстове поле введення файлу та відкриває кнопку Windows спливаюче вікно з використанням збережених зображень. Якщо роздільна здатність екрана змінюється від захоплення зображення до тестового виконання сценарію, поведінка Sikuli буде непослідовною. Тому завжди бажано запускати тестовий сценарій з тією самою роздільною здатністю, з якою знімаються зображення. Зміна розміру пікселів зображень призведе до того, що Sikuli створить виняток FindFailed.
Крок 3) Наступні оператори включають створення об’єктів для класів Screen і Pattern. Створіть новий екранний об’єкт. Встановіть шлях до файлу, який ви хочете завантажити, як параметр для об’єкта Pattern.
Screen s = new Screen(); Pattern fileInputTextBox = new Pattern(filepath + "FileTextBox.PNG"); Pattern openButton = new Pattern(filepath + "OpenButton.PNG");
Крок 4) Наведені нижче твердження включають відкриття браузера Chrome за допомогою URL-адреси: https://demo.guru99.com/test/image_upload/index.php
driver = new ChromeDriver(); driver.get("https://demo.guru99.com/test/image_upload/index.php");
Наведена вище URL-адреса є демонстраційною програмою для демонстрації функції завантаження файлів.
Крок 5) Натисніть кнопку вибору файлу за допомогою наведеного нижче оператора
driver.findElement(By.xpath(".//*[@id='photoimg']")).click();
Крок 6) Зачекайте, поки з’явиться спливаюче вікно. Метод очікування використовується для обробки затримки, пов’язаної з відкриттям спливаючих вікон після натискання кнопки перегляду.
s.wait(fileInputTextBox, 20);
Крок 7) Введіть шлях до файлу у текстовому полі вхідного файлу та натисніть кнопку «Відкрити».
s.type(fileInputTextBox, inputFilePath + "Test.docx"); s.click(openButton);
Крок 8) Закрийте браузер
driver.close();
вихід:
Спочатку скрипт відкриває браузер Chrome
Натисніть кнопку «Вибрати файл», з’явиться спливаюче вікно файлу Windows. Вводить дані в текстове поле «Введення файлу» та натискає кнопку «Відкрити».
Екран нижче відображається після завершення завантаження файлу та закриття браузера
Висновок
Sikuli використовується для легкої обробки флеш-об’єктів на веб-сторінці та спливаючих вікон. Sikuli найкраще використовувати, коли елементи інтерфейсу користувача не змінюються часто. Через цей недолік, з точки зору тестування автоматизації, Sikuli надається менше переваг порівняно з іншими фреймворками, такими як Robot і AutoIT.