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.

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

Utilizați Sikuli Cu Selenium Webdriver

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

utilizați Sikuli With Selenium Webdriver

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”.

Exemplu de cod pentru încărcarea fișierelor folosind Sikuli

Iată cum ar trebui să arate captura de ecran:-

Exemplu de cod pentru încărcarea fișierelor folosind Sikuli

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

Exemplu de cod pentru încărcarea fișierelor folosind Sikuli

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”.

Exemplu de cod pentru încărcarea fișierelor folosind Sikuli

Ecranul de mai jos este afișat odată ce încărcarea fișierului este finalizată și închide browserul

Exemplu de cod pentru încărcarea fișierelor folosind Sikuli

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.