Sikuli Tutorial za Selenium Automatizacija
U čemu je Sikuli Selenium?
Sikuli je alat za automatizaciju testiranja temeljen na GUI-ju otvorenog koda. Uglavnom se koristi za interakciju s elementima web stranica i rukovanje skočnim prozorima. Sikuli koristi tehniku "Image Recognition" i "Control GUI" za interakciju s elementima web stranica i skočnim prozorima. U Sikuliju se svi web elementi uzimaju kao slike i pohranjuju unutar projekta.
Kako koristiti Sikuli sa Selenium Webdriver
Sikuli se može integrirati sa selenium webdriverom pomoću Sikuli JAR datoteke.
Slijed u nastavku je popis koraka za konfiguriranje Sikulija sa selenium webdriverom.
Korak 1) Preuzimanje Sikuli JAR datoteku s donjeg URL-a i izvucite sadržaj ZIP datoteke u mapu.
https://mvnrepository.com/artifact/com.sikulix/sikulixapi/2.0.5
Korak 2) Napravite novi JAVA projekt u Eclipse i dodajte JAR datoteku u put izgradnje, zajedno sa selenium jar datotekama pomoću desnog klika na projekt -> Put izgradnje -> Konfiguriraj put izgradnje
Nakon što ste dodali JAR datoteku na stazu izgradnje projekta, mogu se koristiti klase koje nudi Sikuli.
Razred ekrana u Sikulima
Klasa zaslona je osnovna klasa za sve metode koje nudi Sikuli. Klasa zaslona sadrži unaprijed definirane metode za sve operacije koje se uobičajeno izvode na elementima zaslona kao što su klik, dvostruki klik, pružanje unosa u tekstualni okvir, lebdenje, itd. Dolje je popis najčešće korištenih metoda koje nudi klasa zaslona.
način | Description | Sintaksa |
---|---|---|
Kliknite | Ova se metoda koristi za klik na element na zaslonu koristeći naziv slike kao parametar. | Zaslon s = novi Zaslon();
s.click(“QA.png”); |
dvostruki klik | Ova se metoda koristi za dvostruki klik na element. Prihvaća naziv slike kao parametar. | Zaslon s = novi Zaslon();
s.doubleClick(“QA.png”); |
Tip | Ova se metoda koristi za pružanje ulazne vrijednosti elementu. Prihvaća naziv slike i tekst za slanje kao parametre. |
s.type(“QA.png”,”TEKST”); |
Lebdjeti | Ova se metoda koristi za postavljanje pokazivača iznad elementa. Prihvaća naziv slike kao parametar. |
s.hover("QA.png"); |
naći | Ova se metoda koristi za pronalaženje određenog elementa na zaslonu. Prihvaća naziv slike kao parametar. |
s.find("QA.png"); |
Razred uzora u Sikulima
Klasa uzorka koristi se za pridruživanje slikovne datoteke dodatnim atributima za jedinstvenu identifikaciju elementa. Uzima putanju slike kao parametar.
Pattern p = new Pattern(“Put slike”);
Sljedeće su najčešće korištene metode klase Pattern.
način | Description | Sintaksa |
---|---|---|
getFileName | Vraća naziv datoteke sadržan u objektu uzorka. |
Uzorak p = novi uzorak (“D:\Demo\QA.png”); String naziv datoteke = p.getFileName(); |
sličan | Ova metoda vraća novi objekt Pattern sa sličnošću postavljenom na određenu vrijednost. Prihvaća vrijednost sličnosti između 0 i 1 kao parametar. Sikuli traži sve elemente koji spadaju unutar navedenog raspona sličnosti i vraća novi objekt uzorka. |
Uzorak p1 = p.similar(0.7f); |
Točan | Ova metoda vraća novi objekt uzorka sa sličnošću postavljenom na 1. Traži samo točno podudaranje navedenog elementa. |
Uzorak p1 = p.exact(); |
Primjer koda za učitavanje datoteke pomoću Sikulija
Donji kod objašnjava upotrebu Sikulija za učitavanje datoteka 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(); } }
Objašnjenje koda:
Korak 1) Prva izjava uključuje postavljanje putanje izvršnog upravljačkog programa za chrome.
System.setProperty("webdriver.chrome.driver", "D:\\ chromedriver.exe");
Korak 2) Koristite alat za snimanje zaslona kao što je Snipping Tool za snimanje zaslona skočnog prozora 'FileTextBox' i gumb 'Otvori'.
Ovako bi trebala izgledati vaša snimka zaslona:-
Slike za tekstualni okvir za unos Windows datoteke i gumb za otvaranje pohranjuju se na 'FileTextBox.PNG' i 'OpenButton.PNG'.
Sikuli koristi tehniku Image Recognition za prepoznavanje elemenata na ekranu. Pronalazi elemente na zaslonu isključivo na temelju njihovih slika.
Primjer: Ako želite automatizirati operaciju otvaranja bilježnice, trebate pohraniti sliku ikone radne površine za bilježnicu u PNG datoteku i izvršiti radnju klika na njoj.
U našem slučaju, prepoznaje tekstualni okvir za unos datoteke i otvara gumb na Windows skočni prozor pomoću pohranjenih slika. Ako se razlučivost zaslona mijenja od snimanja slike do izvođenja testne skripte, ponašanje Sikulija bilo bi nedosljedno. Stoga je uvijek preporučljivo pokrenuti testnu skriptu na istoj razlučivosti u kojoj su slike snimljene. Promjena u veličini piksela slika rezultirat će time da Sikuli izbaci iznimku FindFailed.
Korak 3) Sljedeće izjave uključuju stvaranje objekata za klase Screen i Pattern. Stvorite novi zaslonski objekt. Postavite putanju datoteke koju želite prenijeti kao parametar objektu Pattern.
Screen s = new Screen(); Pattern fileInputTextBox = new Pattern(filepath + "FileTextBox.PNG"); Pattern openButton = new Pattern(filepath + "OpenButton.PNG");
Korak 4) Donje izjave uključuju otvaranje preglednika Chrome s URL-om: https://demo.guru99.com/test/image_upload/index.php
driver = new ChromeDriver(); driver.get("https://demo.guru99.com/test/image_upload/index.php");
Gornji URL je demo aplikacija za demonstraciju funkcije učitavanja datoteka.
Korak 5) Pritisnite gumb za odabir datoteke koristeći donju izjavu
driver.findElement(By.xpath(".//*[@id='photoimg']")).click();
Korak 6) Pričekajte da se pojavi prozorski prozor. Metoda čekanja koristi se za rješavanje odgode povezane s otvaranjem iskačućih prozora nakon klika na gumb za pregledavanje.
s.wait(fileInputTextBox, 20);
Korak 7) Upišite put datoteke u tekstni okvir ulazne datoteke i kliknite gumb Otvori
s.type(fileInputTextBox, inputFilePath + "Test.docx"); s.click(openButton);
Korak 8) Zatvorite preglednik
driver.close();
Izlaz:
U početku skripta otvara chrome preglednik
Klikom na gumb 'Odaberi datoteku' pojavit će se skočni prozor za Windows datoteku. Unosi podatke u tekstualni okvir za unos datoteke i klikne na gumb "Otvori".
Donji zaslon se prikazuje nakon što je učitavanje datoteke završeno i zatvara preglednik
Zaključak
Sikuli se koristi za rukovanje flash objektima na web stranici i skočnim prozorima s lakoćom. Sikuli je najbolje koristiti kada se elementi na korisničkom sučelju ne mijenjaju često. Zbog ovog nedostatka, iz perspektive testiranja automatizacije, Sikuli ima manje prednosti u usporedbi s drugim okvirima kao što su Robot i AutoIT.