Tutorial til Sikuli Selenium Automation
Hvad er Sikuli i Selenium?
Sikuli er et open source GUI-baseret testautomatiseringsværktøj. Det bruges hovedsageligt til at interagere med elementer på websider og håndtere vinduesbaserede popups. Sikuli bruger teknikken "Image Recognition" og "Control GUI" til at interagere med elementer af websider og popup-vinduer i vinduer. I Sikuli er alle webelementerne taget som billeder og gemt inde i projektet.
Sådan bruger du Sikuli med Selenium Webdriver
Sikuli kan integreres med selen webdriver ved hjælp af Sikuli JAR-filen.
Nedenstående sekvens er listen over trin til at konfigurere Sikuli med selen webdriver.
Trin 1) Download Sikuli JAR-filen fra nedenstående URL, og udpak indholdet af ZIP-filen til en mappe.
https://mvnrepository.com/artifact/com.sikulix/sikulixapi/2.0.5
Trin 2) Opret et nyt JAVA-projekt i Eclipse og tilføj JAR-filen til build-stien sammen med selen-jar-filer ved hjælp af højreklik på projektet -> Build Path -> Konfigurer Build Path
Når du har tilføjet JAR-filen til projektets byggesti, kan klasser leveret af Sikuli bruges.
Skærmklasse i Sikuli
Skærmklasse er basisklasserne for alle metoderne leveret af Sikuli. Skærmklassen indeholder foruddefinerede metoder til alle de almindeligt udførte operationer på skærmelementer såsom klik, dobbeltklik, input til en tekstboks, svæv osv. Nedenstående er listen over almindeligt anvendte metoder leveret af skærmklassen.
Metode | Produktbeskrivelse | Syntaks |
---|---|---|
Klik | Denne metode bruges til at klikke på et element på skærmen med billednavn som parameter. | Skærm s = ny skærm();
s.click(“QA.png”); |
dobbeltklik | Denne metode bruges til at dobbeltklikke på et element. Den accepterer billednavn som parameter. | Skærm s = ny skærm();
s.doubleClick(“QA.png”); |
Type | Denne metode bruges til at give inputværdi til et element. Den accepterer billednavnet og teksten, der skal sendes som parametre. |
s.type(“QA.png”,,”TEXT”); |
Hover | Denne metode bruges til at holde markøren over et element. Den accepterer billednavn som parameter. |
s.hover(“QA.png”); |
Finde | Denne metode bruges til at finde et bestemt element på skærmen. Den accepterer billednavn som parameter. |
s.find(“QA.png”); |
Mønsterklasse i Sikuli
Mønsterklassen bruges til at associere billedfilen med yderligere attributter for entydigt at identificere elementet. Det tager billedets sti som en parameter.
Mønster p = nyt mønster(“Billedets sti”);
Følgende er de mest almindeligt anvendte metoder i Pattern-klassen.
Metode | Produktbeskrivelse | Syntaks |
---|---|---|
getFileName | Returnerer filnavnet indeholdt i Pattern-objektet. |
Mønster p = nyt mønster(“D:\Demo\QA.png”); String filnavn = p.getFileName(); |
lignende | Denne metode returnerer et nyt Pattern-objekt med lighed sat til en specificeret værdi. Den accepterer lighedsværdien mellem 0 til 1 som en parameter. Sikuli leder efter alle elementer, der falder inden for det angivne lighedsområde og returnerer et nyt mønsterobjekt. |
Mønster p1 = p.similar(0.7f); |
Præcis | Denne metode returnerer et nyt mønsterobjekt med lighed sat til 1. Den leder kun efter en nøjagtig match af det angivne element. |
Mønster p1 = p.exact(); |
Kodeeksempel for filupload ved hjælp af Sikuli
Nedenstående kode forklarer brugen af Sikuli til filupload i 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(); } }
Kodeforklaring:
Trin 1) Den første sætning involverer indstilling af driverens eksekverbare sti til chrome.
System.setProperty("webdriver.chrome.driver", "D:\\ chromedriver.exe");
Trin 2) Brug et screengrab-værktøj som f.eks Snipping Tool for at tage skærmbilleder af windows popup 'FileTextBox' og 'Åbn'-knappen.
Sådan skal dit skærmbillede se ud:
Billeder til Windows-filinput tekstboks og åben knap gemmes på 'FileTextBox.PNG' og 'OpenButton.PNG'.
Sikuli bruger teknikken med billedgenkendelse til at genkende elementer på skærmen. Den finder elementer på skærmen udelukkende baseret på deres billeder.
Eksempel: Hvis du vil automatisere betjeningen af at åbne notesblok, skal du gemme billedet af et skrivebordsikon til notesblok på en PNG-fil og udføre klikoperation på den.
I vores tilfælde genkender den filinput tekstboksen og åbner knappen på Windows popup ved hjælp af de gemte billeder. Hvis skærmopløsningen ændres fra billedoptagelse til udførelse af testscript, ville Sikulis adfærd være inkonsekvent. Derfor er det altid tilrådeligt at køre testscriptet med den samme opløsning, som billederne er taget med. Ændring i pixelstørrelse på billeder vil resultere i, at Sikuli kaster en FindFailed-undtagelse.
Trin 3) De næste udsagn inkluderer oprettelsen af objekter til skærm- og mønsterklasser. Opret et nyt skærmobjekt. Indstil stien til den fil, du vil uploade som en parameter til Pattern-objektet.
Screen s = new Screen(); Pattern fileInputTextBox = new Pattern(filepath + "FileTextBox.PNG"); Pattern openButton = new Pattern(filepath + "OpenButton.PNG");
Trin 4) Nedenstående udsagn involverer åbning af Chrome-browseren med URL'en: https://demo.guru99.com/test/image_upload/index.php
driver = new ChromeDriver(); driver.get("https://demo.guru99.com/test/image_upload/index.php");
Ovenstående URL er en demoapplikation til at demonstrere filoverførselsfunktionalitet.
Trin 5) Klik på knappen vælg fil ved hjælp af nedenstående erklæring
driver.findElement(By.xpath(".//*[@id='photoimg']")).click();
Trin 6) Vent på, at popup-vinduet vises. Vent-metoden bruges til at håndtere forsinkelsen, der er forbundet med at åbne vinduer, som dukker op efter klik på gennemse-knappen.
s.wait(fileInputTextBox, 20);
Trin 7) Indtast filstien på inputfilens tekstboks, og klik på knappen Åbn
s.type(fileInputTextBox, inputFilePath + "Test.docx"); s.click(openButton);
Trin 8) Luk browseren
driver.close();
Output:
I første omgang åbner scriptet chrome-browseren
Hvis du klikker på knappen 'Vælg fil', vises popup-skærmen for Windows-filen. Indsætter data i filindtastningsfeltet og klikker på knappen 'Åbn'
Nedenstående skærm vises, når filoverførslen er fuldført og lukker browseren
Konklusion
Sikuli bruges til nemt at håndtere flash-objekter på en webside og popup-vinduer. Sikuli bruges bedst, når elementerne på brugergrænsefladen ikke ændres ofte. På grund af denne ulempe, fra et automationstestperspektiv, gives Sikuli mindre præference sammenlignet med andre rammer såsom Robot og AutoIT.