Sikuli Tutorial pentru Selenium Automatizare
รn ce este Sikuli Selenium?
Sikuli este un instrument de automatizare a testelor bazat pe GUI open-source. Este folosit รฎn principal pentru interacศiunea cu elementele paginilor web ศi gestionarea ferestrelor pop-up. Sikuli foloseศte tehnica โRecunoaศtere a imaginiiโ ศi โInterfaศฤ graficฤ de controlโ pentru a interacศiona cu elementele paginilor web ศi ferestrele pop-up. รn Sikuli, toate elementele web sunt luate ca imagini ศi stocate รฎn interiorul proiectului.
Cum sฤ utilizaศi Sikuli cu Selenium Webdriver
Sikuli poate fi integrat cu selenium webdriver folosind fiศierul JAR Sikuli.
Secvenศa de mai jos este lista de paศi pentru a configura Sikuli cu selenium webdriver.
Pasul 1) Descฤrcaศi fiศierul Sikuli JAR de la adresa URL de mai jos ศi extrageศi conศinutul fiศierului ZIP รฎntr-un folder.
Pas 2) Creaศi un nou proiect JAVA รฎn Eclipse ศi adฤugaศi fiศierul JAR pentru a construi calea, รฎmpreunฤ cu fiศierele jar cu seleniu, folosind clic dreapta pe proiect -> Calea Build -> Configuraศi Calea Build
Odatฤ ce aศi adฤugat fiศierul JAR la calea de construire a proiectului, pot fi folosite clasele furnizate de Sikuli.
Clasa de ecran รฎn Sikuli
Clasa Screen este clasele de bazฤ pentru toate metodele furnizate de Sikuli. Clasa Screen conศine metode predefinite pentru toate operaศiunile efectuate รฎn mod obiศnuit pe elementele ecranului, cum ar fi clic, dublu clic, introducerea unei casete de text, hover etc. Mai jos este lista metodelor utilizate รฎn mod obiศnuit furnizatฤ de clasa Screen.
| Metodฤ | Descriere | Sintaxฤ |
|---|---|---|
| Clic | Aceastฤ metodฤ este folositฤ pentru a face clic pe un element de pe ecran folosind numele imaginii ca parametru. | Ecran s = ecran nou();
s.click(โQA.pngโ); |
| dublu clic | Aceastฤ metodฤ este folositฤ pentru a face dublu clic pe un element. Acceptฤ numele imaginii ca parametru. | Ecran s = ecran nou();
s.doubleClick(โQA.pngโ); |
| Tip | Aceastฤ metodฤ este folositฤ pentru a furniza valoare de intrare unui element. Acceptฤ numele imaginii ศi textul care urmeazฤ sฤ fie trimis ca parametri. |
s.type(โQA.pngโ,โTEXTโ); |
| Planare | Aceastฤ metodฤ este folositฤ pentru a trece cu mouse-ul peste un element. Acceptฤ numele imaginii ca parametru. |
s.hover(โQA.pngโ); |
| Gฤsi | Aceastฤ metodฤ este folositฤ pentru a gฤsi un anumit element pe ecran. Acceptฤ numele imaginii ca parametru. |
s.find(โQA.pngโ); |
Clasa de modele รฎn Sikuli
Clasa de model este folositฤ pentru a asocia fiศierul imagine cu atribute suplimentare pentru a identifica unic elementul. Ia calea imaginii ca parametru.
Model p = model nou ("Calea imaginii");
Urmฤtoarele sunt cele mai frecvent utilizate metode ale clasei Pattern.
| Metodฤ | Descriere | Sintaxฤ |
|---|---|---|
| getFileName | Returneazฤ numele fiศierului conศinut รฎn obiectul Pattern. |
Model p = model nou ("D:\Demo\QA.png"); Nume fiศier ศir = p.getFileName(); |
| asemฤnฤtor | Aceastฤ metodฤ returneazฤ un nou obiect Pattern cu asemฤnarea setatฤ la o valoare specificatฤ. Acceptฤ valoarea similaritฤศii รฎntre 0 ศi 1 ca parametru. Sikuli cautฤ toate elementele care se รฎncadreazฤ รฎn intervalul de similaritate specificat ศi returneazฤ un nou obiect model. |
Model p1 = p.similar(0.7f); |
| Exact | Aceastฤ metodฤ returneazฤ un nou obiect model cu asemฤnarea setatฤ la 1. Cautฤ doar o potrivire exactฤ a elementului specificat. |
Model p1 = p.exact(); |
Exemplu de cod pentru รฎncฤrcarea fiศierelor folosind Sikuli
Codul de mai jos explicฤ utilizarea Sikuli pentru รฎncฤrcarea fiศierelor รฎn 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();
}
}
Explicaศia codului:
Pas 1) Prima declaraศie implicฤ setarea cฤii executabile a driverului pentru Chrome.
System.setProperty("webdriver.chrome.driver", "D:\\ chromedriver.exe");
Pas 2) Utilizaศi un instrument de capturare a ecranului, cum ar fi Snipping Tool pentru a face capturi de ecran ale ferestrei pop-up โFileTextBox' ศi butonul โDeschidereโ.
Iatฤ cum ar trebui sฤ arate captura de ecran:-
Imaginile pentru caseta text de introducere a fiศierului Windows ศi butonul de deschidere sunt stocate รฎn โFileTextBox.PNG' ศi 'OpenButton.PNG'.
Sikuli foloseศte tehnica Recunoaศterii imaginilor pentru a recunoaศte elementele de pe ecran. Gฤseศte elemente pe ecran numai pe baza imaginilor lor.
Exemplu: Dacฤ doriศi sฤ automatizaศi operaศiunea de deschidere a blocnotesului, atunci trebuie sฤ stocaศi imaginea unei pictograme de pe desktop pentru blocnotes รฎntr-un fiศier PNG ศi sฤ efectuaศi operaศia de clic pe acesta.
รn cazul nostru, recunoaศte caseta de text de introducere a fiศierului ศi deschide butonul pe Windows pop-up folosind imaginile stocate. Dacฤ rezoluศia ecranului se schimbฤ de la capturarea imaginii la executarea scriptului de testare, comportamentul lui Sikuli ar fi inconsecvent. Prin urmare, este รฎntotdeauna recomandabil sฤ rulaศi scriptul de testare la aceeaศi rezoluศie la care sunt capturate imaginile. Schimbarea dimensiunii pixelilor imaginilor va determina ca Sikuli sฤ arunce o excepศie FindFailed.
Pas 3) Urmฤtoarele instrucศiuni includ crearea de obiecte pentru clasele Screen ศi Pattern. Creaศi un nou obiect de ecran. Setaศi calea fiศierului pe care doriศi sฤ รฎl รฎncฤrcaศi ca parametru รฎn obiectul Pattern.
Screen s = new Screen(); Pattern fileInputTextBox = new Pattern(filepath + "FileTextBox.PNG"); Pattern openButton = new Pattern(filepath + "OpenButton.PNG");
Pas 4) Declaraศiile de mai jos implicฤ deschiderea browserului Chrome cu adresa URL: https://demo.guru99.com/test/image_upload/index.php
driver = new ChromeDriver();
driver.get("https://demo.guru99.com/test/image_upload/index.php");
Adresa URL de mai sus este o aplicaศie demonstrativฤ pentru a demonstra funcศionalitatea de รฎncฤrcare a fiศierelor.
Pas 5) Faceศi clic pe butonul de alegere a fiศierului folosind declaraศia de mai jos
driver.findElement(By.xpath(".//*[@id='photoimg']")).click();
Pas 6) Aศteptaศi sฤ aparฤ fereastra pop-up. Metoda de aศteptare este utilizatฤ pentru a gestiona รฎntรขrzierea asociatฤ cu deschiderea ferestrelor pop-up dupฤ ce faceศi clic pe butonul de rฤsfoire.
s.wait(fileInputTextBox, 20);
Pas 7) Tastaศi calea fiศierului รฎn caseta de text pentru fiศierul de intrare ศi faceศi clic pe butonul Deschidere
s.type(fileInputTextBox, inputFilePath + "Test.docx"); s.click(openButton);
Pas 8) รnchideศi browserul
driver.close();
ieศire:
Iniศial, scriptul deschide browserul Chrome
Faceศi clic pe butonul โAlegeศi fiศierulโ, va apฤrea ecranul pop-up pentru fiศiere din Windows. Introduce date รฎn caseta de text Introducere fiศier ศi face clic pe butonul โDeschidereโ.
Ecranul de mai jos este afiศat odatฤ ce รฎncฤrcarea fiศierului este finalizatฤ ศi รฎnchide browserul
Concluzie
Sikuli este folosit pentru a gestiona cu uศurinศฤ obiectele flash de pe o paginฤ web ศi ferestrele pop-up. Sikuli este cel mai bine utilizat atunci cรขnd elementele de pe interfaศa cu utilizatorul nu se schimbฤ frecvent. Datoritฤ acestui dezavantaj, din perspectiva testฤrii automatizฤrii, Sikuli are o preferinศฤ mai micฤ รฎn comparaศie cu alte cadre precum Robot ศi AutoIT.







