Sikuli Урок за Selenium Автоматизация
В какво е Сикули Selenium?
Сикули е инструмент за автоматизиране на тестове, базиран на GUI с отворен код. Използва се главно за взаимодействие с елементи на уеб страници и обработка на изскачащи прозорци. Sikuli използва техниката на „разпознаване на изображения“ и „контролен GUI“, за да взаимодейства с елементи на уеб страници и изскачащи прозорци. В Sikuli всички уеб елементи се вземат като изображения и се съхраняват в проекта.
Как да използвате Sikuli с Selenium Уебдрайвер
Sikuli може да се интегрира със selenium webdriver с помощта на Sikuli JAR файла.
Последователността по-долу е списъкът със стъпки за конфигуриране на Sikuli със selenium webdriver.
Стъпка 1) Изтеглете файла Sikuli JAR от URL адреса по-долу и извлечете съдържанието на ZIP файла в папка.
https://mvnrepository.com/artifact/com.sikulix/sikulixapi/2.0.5
Стъпка 2) Създайте нов JAVA проект в Eclipse и добавете JAR файла към пътя за изграждане, заедно със селенови jar файлове, като използвате десен бутон върху проекта -> Път за изграждане -> Конфигуриране на път за изграждане
След като добавите JAR файла към пътеката за изграждане на проекта, могат да се използват класове, предоставени от Sikuli.
Екран клас в Сикули
Екранният клас е базовият клас за всички методи, предоставени от Sikuli. Класът на екрана съдържа предварително дефинирани методи за всички често изпълнявани операции върху елементи на екрана, като щракване, двойно щракване, предоставяне на въвеждане в текстово поле, задържане на мишката и т.н. По-долу е списъкът с често използвани методи, предоставени от класа на екрана.
Начин на доставка | Descriptйон | Синтаксис |
---|---|---|
Кликнете | Този метод се използва за щракване върху елемент на екрана, като се използва името на изображението като параметър. | Екран s = нов екран ();
s.click(“QA.png”); |
двойно щракване | Този метод се използва за двойно щракване върху елемент. Той приема името на изображението като параметър. | Екран s = нов екран ();
s.doubleClick(“QA.png”); |
Тип | Този метод се използва за предоставяне на входна стойност на елемент. Той приема името на изображението и текста, които да бъдат изпратени като параметри. |
s.type(“QA.png”,”TEXT”); |
мътя | Този метод се използва за задържане на курсора на мишката върху елемент. Той приема името на изображението като параметър. |
s.hover(“QA.png”); |
Какво | Този метод се използва за намиране на определен елемент на екрана. Той приема името на изображението като параметър. |
s.find(“QA.png”); |
Клас по модел в Сикули
Класът Pattern се използва за свързване на файла с изображение с допълнителни атрибути за уникално идентифициране на елемента. Той приема пътя на изображението като параметър.
Pattern p = new Pattern(“Път на изображението”);
По-долу са най-често използваните методи на клас Pattern.
Начин на доставка | Descriptйон | Синтаксис |
---|---|---|
getFileName | Връща името на файла, съдържащ се в обекта 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 за правене на екранни снимки на изскачащ прозорец на Windows „FileTextBox“ и бутон „Отвори”.
Ето как трябва да изглежда вашата екранна снимка:-
Изображенията за текстовото поле за въвеждане на файл на 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 адреса: 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.