Учебное пособие по Сикули для Selenium Автоматизация

Что такое Сикули? Selenium?

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

Как использовать Сикули с Selenium Вебдрайвер

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

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

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

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

Используйте Сикули с Selenium Вебдрайвер

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

используйте Сикули С Selenium Вебдрайвер

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

Экранный класс в Сикули

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

Способ доставки Описание Синтаксис
Нажмите Этот метод используется для щелчка по элементу на экране, используя имя изображения в качестве параметра. Экран s = новый Экран();

s.click("QA.png");

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

s.doubleClick("QA.png");

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

s.type("QA.png","ТЕКСТ");

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

s.hover("QA.png");

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

s.find("QA.png");

Класс узоров в Сикули

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

Шаблон p = новый шаблон («Путь изображения»);

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

Способ доставки Описание Синтаксис
получить имя_файла Возвращает имя файла, содержащееся в объекте Pattern.

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

Строковое имя файла = 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 для создания снимков экрана всплывающих окон «FileText»Boxи кнопку «Открыть».

Пример кода для загрузки файла с помощью Sikuli

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

Пример кода для загрузки файла с помощью Sikuli

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

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

Пример. Если вы хотите автоматизировать операцию открытия блокнота, вам необходимо сохранить изображение значка блокнота на рабочем столе в 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) Подождите, пока появится всплывающее окно Windows. Метод ожидания используется для обработки задержки, связанной с открытием всплывающих окон после нажатия кнопки обзора.

s.wait(fileInputTextBox, 20);

Шаг 7) Введите путь к файлу в текстовое поле входного файла и нажмите кнопку «Открыть».

s.type(fileInputTextBox, inputFilePath + "Test.docx");
s.click(openButton);

Шаг 8) Закройте браузер

driver.close();

Вывод:

Изначально скрипт открывает браузер Chrome.

Пример кода для загрузки файла с помощью Sikuli

Нажмите кнопку «Выбрать файл», появится всплывающее окно с файлом Windows. Вводит данные в текстовое поле ввода файла и нажимает кнопку «Открыть».

Пример кода для загрузки файла с помощью Sikuli

Экран ниже отображается после завершения загрузки файла и закрытия браузера.

Пример кода для загрузки файла с помощью Sikuli

Заключение

Sikuli используется для простой обработки Flash-объектов на веб-страницах и всплывающих окнах Windows. Sikuli лучше всего использовать, когда элементы пользовательского интерфейса не меняются часто. Из-за этого недостатка с точки зрения автоматизации тестирования Sikuli отдается меньше предпочтений по сравнению с другими платформами, такими как Robot и AutoIT.