Сікулі Підручник для 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

Використовуйте Сікулі З Selenium Веб-драйвер

Крок 2) Створіть новий проект JAVA в Eclipse і додайте файл JAR до шляху збірки разом із файлами селену jar, клацнувши правою кнопкою миші на проекті -> Шлях збірки -> Налаштувати шлях збірки

використання Сікулі З Selenium Веб-драйвер

Після того як ви додали файл 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' і кнопку "Відкрити".

Приклад коду для завантаження файлу за допомогою Sikuli

Ось як має виглядати ваш скріншот:-

Приклад коду для завантаження файлу за допомогою Sikuli

Зображення для текстового поля введення файлу 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

Приклад коду для завантаження файлу за допомогою Sikuli

Натисніть кнопку «Вибрати файл», з’явиться спливаюче вікно файлу Windows. Вводить дані в текстове поле «Введення файлу» та натискає кнопку «Відкрити».

Приклад коду для завантаження файлу за допомогою Sikuli

Екран нижче відображається після завершення завантаження файлу та закриття браузера

Приклад коду для завантаження файлу за допомогою Sikuli

Висновок

Sikuli використовується для легкої обробки флеш-об’єктів на веб-сторінці та спливаючих вікон. Sikuli найкраще використовувати, коли елементи інтерфейсу користувача не змінюються часто. Через цей недолік, з точки зору тестування автоматизації, Sikuli надається менше переваг порівняно з іншими фреймворками, такими як Robot і AutoIT.