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.

Rezumaศ›i aceastฤƒ postare cu: