Учебники

64) Учебник по Сикули

Что такое Sikuli?

Sikuli — это инструмент автоматизации с открытым исходным кодом на основе графического интерфейса. Он используется для взаимодействия с элементами веб-страницы и обработки всплывающих окон на основе окон. Он использует технику «Распознавания изображений» для взаимодействия с элементами веб-страницы и всплывающими окнами. Sikuli рассматривает все элементы веб-страницы как изображения и распознает элементы на основе их изображений. Sikuli предпочтительнее, когда элементы пользовательского интерфейса стабильны и не постоянно меняются.

В этом уроке мы узнаем

Интеграция Sikuli с Selenium Webdriver

Sikuli может быть интегрирован с селеновым веб-драйвером с помощью файла JAR Sikuli.

Ниже приведена последовательность шагов для настройки Sikuli с помощью селенового веб-драйвера.

Шаг 1) Загрузите JAR-файл Sikuli по указанному ниже URL-адресу.

https://mvnrepository.com/artifact/com.sikulix/sikulixapi/1.1.0

Извлеките содержимое файла ZIP в папку.

Шаг 2) Создайте новый проект JAVA в Eclipse и добавьте JAR-файл для построения пути вместе с файлами jar селена, используя правой кнопкой мыши проект -> Build Path -> Configure Build Path

После добавления файла JAR в путь сборки проекта можно использовать классы, предоставляемые Sikuli.

Класс экрана в Сикули

Класс экрана — это базовые классы для всех методов, предоставляемых Sikuli. Класс Screen содержит предопределенные методы для всех часто выполняемых операций с элементами экрана, таких как щелчок, двойной щелчок, ввод данных в текстовое поле, наведение указателя мыши и т. Д. Ниже приведен список часто используемых методов, предоставляемых классом Screen.

метод Описание Синтаксис
щелчок Этот метод используется для нажатия на элемент на экране, используя имя изображения в качестве параметра.

Screen s = новый экран ();

s.click ( «QA.png»);

Двойной клик Этот метод используется для двойного щелчка по элементу. Он принимает имя изображения в качестве параметра.

Screen s = новый экран ();

s.doubleClick ( «QA.png»);

Тип Этот метод используется для предоставления входного значения элементу. Он принимает имя изображения и текст для отправки в качестве параметров.

s.type ( «QA.png», «Текст»);

зависать Этот метод используется для наведения на элемент. Он принимает имя изображения в качестве параметра.

s.hover ( «QA.png»);

найти Этот метод используется для поиска определенного элемента на экране. Он принимает имя изображения в качестве параметра.

s.find ( «QA.png»);

Узор узора в Сикули

Класс Pattern используется для связывания файла изображения с дополнительными атрибутами для уникальной идентификации элемента. Он принимает путь изображения в качестве параметра.

Pattern p = new Pattern («Путь изображения»);

Ниже приведены наиболее часто используемые методы класса Pattern.

метод

Описание

Синтаксис

GetFileName

Возвращает имя файла, содержащегося в объекте Pattern.

Pattern p = новый шаблон («D: \ Demo \ QA.png»);

String filename = p.getFileName ();

аналогичный

Этот метод возвращает новый объект Pattern с установленным значением подобия. Он принимает значение сходства от 0 до 1 в качестве параметра. Sikuli ищет все элементы, попадающие в указанный диапазон сходства, и возвращает новый объект шаблона.

Образец p1 = p.simil (0,7f);

точная

Этот метод возвращает новый объект шаблона с подобием, установленным на 1. Он ищет только точное совпадение указанного элемента.

Pattern 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("http://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» и «Open».

Вот как должен выглядеть ваш скриншот: —

Изображения для текстового поля ввода файла Windows и кнопки открытия сохраняются в «FileTextBox.PNG» и «OpenButton.PNG».

Sikuli использует технику распознавания изображений для распознавания элементов на экране. Он находит элементы на экране исключительно на основе их изображений.

Пример: если вы хотите автоматизировать операцию открытия блокнота, вам нужно сохранить изображение значка на рабочем столе для блокнота в файле 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-адресом: http://demo.guru99.com/test/image_upload/index.php

driver = new ChromeDriver();
driver.get("http://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 используется для удобной обработки флеш-объектов на веб-странице и всплывающих окон Windows. Sikuli лучше всего использовать, когда элементы пользовательского интерфейса меняются не часто. Из-за этого недостатка, с точки зрения автоматизации тестирования, Sikuli отдается меньше предпочтений по сравнению с другими платформами, такими как Robot и AutoIT.