Sikuli Урок за Selenium Автоматизация
⚡ Умно обобщение
Sikuli автоматизира графичен интерфейс, като разпознава съхранени екранни снимки, а не локатори, което позволява на Selenium тест драйв Windows изскачащи прозорци, диалогови прозорци за файлове с оригинален интерфейс и Flash обекти, до които WebDriver сам по себе си не може да достигне.
В какво е Сикули Selenium?
Сикули е инструмент за автоматизиране на тестове, базиран на GUI с отворен код. Използва се главно за взаимодействие с елементи на уеб страници и обработка на изскачащи прозорци. Sikuli използва техниката на „разпознаване на изображения“ и „контролен GUI“, за да взаимодейства с елементи на уеб страници и изскачащи прозорци. В Sikuli всички уеб елементи се вземат като изображения и се съхраняват в проекта.
⚠️ Бележка за именуване: проектът се поддържа и днес като SikuliX, публикувано в Maven Central като com.sikulix:sikulixapiИмената на класовете по-долу са непроменени.
Как да използвате Sikuli с Selenium Уебдрайвер
Sikuli може да се интегрира с Selenium WebDriver, използвайки JAR файла Sikuli, в двете стъпки по-долу.
Стъпка 1) Изтеглете JAR файлът Sikuli отдолу URLи бившtracсъдържанието на ZIP файла в папка.
https://mvnrepository.com/artifact/com.sikulix/sikulixapi/2.0.5
Стъпка 2) Създайте нов JAVA проект в Eclipse и добавете JAR файла към пътя за изграждане, заедно със selenium jar файловете, като използвате десен бутон върху проекта -> Път за изграждане -> Конфигуриране на пътя за изграждане, както е показано по-долу.
След като добавите JAR файла към пътя за компилация на проекта, могат да се използват класове, предоставени от Sikuli. Maven проект може да декларира същия артефакт като зависимост.
Екран клас в Сикули
Класът Screen е базовият клас за всички методи, предоставяни от Sikuli. Класът Screen съдържа предварително дефинирани методи за всички често извършвани операции върху екранни елементи, като щракване, двойно щракване, въвеждане на данни в текстово поле, задържане на курсора на мишката и др. По-долу е даден списък с често използвани методи, предоставяни от класа Screen.
| Начин на доставка | Descriptйон | Синтаксис |
|---|---|---|
| Кликнете | Този метод се използва за щракване върху елемент на екрана, като се използва името на изображението като параметър. |
Екран s = нов екран (); s.click(“QA.png”); |
| двойно щракване | Този метод се използва за двойно щракване върху елемент. Той приема името на изображението като параметър. |
Екран s = нов екран (); s.doubleClick(“QA.png”); |
| Тип | Този метод се използва за предоставяне на входна стойност на елемент. Той приема името на изображението и текста, които да бъдат изпратени като параметри. |
s.type(“QA.png”,”TEXT”); |
| мътя | Този метод се използва за задържане на курсора на мишката върху елемент. Той приема името на изображението като параметър. |
s.hover(“QA.png”); |
| Какво | Този метод се използва за намиране на определен елемент на екрана. Той приема името на изображението като параметър. |
s.find(“QA.png”); |
Клас по модел в Сикули
Докато Screen действа върху обикновено име на изображение, класът Pattern се използва за свързване на файла с изображение с допълнителни атрибути, за да идентифицира уникално елемента. Той приема пътя на изображението като параметър.
Pattern p = new Pattern(“Path of image”);
По-долу са най-често използваните методи на клас Pattern.
| Начин на доставка | Descriptйон | Синтаксис |
|---|---|---|
| getFileName | Връща името на файла, съдържащ се в обекта Pattern. |
Шаблон p = нов шаблон (“D:\Demo\QA.png”); Низ име на файл = p.getFileName(); |
| подобен | Този метод връща нов обект Pattern със сходство, зададено на определена стойност. Приема стойността на сходството между 0 до 1 като параметър. Sikuli търси всички елементи, които попадат в посочения диапазон на сходство, и връща нов обект на шаблон. |
Модел p1 = p.similar(0.7f); |
| Точен | Този метод връща нов обект на шаблон със сходство, зададено на 1. Той търси само точно съвпадение на посочения елемент. |
Модел p1 = p.exact(); |
Code Пример за качване на файл с помощта на Sikuli
Кодът по-долу обяснява използването на Sikuli за качване на файлове в Chrome.
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(); } }
Code Обяснение
Стъпка 1) Първият израз включва задаване на пътя на изпълнимия файл на драйвера за chrome.
System.setProperty("webdriver.chrome.driver", "D:\\ chromedriver.exe");
⚠️ Бележка към версията: Selenium 4 разрешава двоичния файл на драйвера чрез Selenium Мениджър, така че този ред вече е незадължителен. Той се запазва такъв, какъвто е написан от източника.
Стъпка 2) Използвайте инструмент за заснемане на екрана като Snipping Tool за правене на екранни снимки на изскачащ прозорец на Windows „FileTextBox„“ и бутон „Отвори“, както е показано по-долу.
Ето как трябва да изглежда екранната ви снимка:
Изображенията за текстовото поле за въвеждане на файл на Windows и бутона за отваряне се съхраняват върху „FileTextBox.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");
Стъпка 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 за изскачащи прозорци. обикновена обработка на файлове с WebDriver не може да достигне.






