Sikuli Tutorial za Selenium Automatizacija
โก Pametni saลพetak
Sikuli automatizira grafiฤko suฤelje prepoznavanjem pohranjenih snimaka zaslona umjesto lokatora, ลกto omoguฤuje Selenium probna voลพnja Windows skoฤne prozore, izvorne dijaloลกke okvire datoteka i Flash objekte do kojih sam WebDriver ne moลพe doฤi.
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.
โ ๏ธ Napomena o imenovanju: projekt se danas odrลพava kao SikuliX, objavljeno na Maven Centralu kao com.sikulix:sikulixapiNazivi klasa u nastavku ostaju nepromijenjeni.
Kako koristiti Sikuli sa Selenium Webdriver
Sikuli se moลพe integrirati s Selenium WebDriver pomoฤu Sikuli JAR datoteke, u dva koraka u nastavku.
Korak 1) Preuzimanje Sikuli JAR datoteka odozdo URLi bivลกitracsadrลพ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 putanju izgradnje, zajedno sa selenium jar datotekama pomoฤu desnog klika na projekt -> Putanja izgradnje -> Konfiguriraj putanju izgradnje, kao ลกto je prikazano dolje.
Nakon ลกto ste dodali JAR datoteku u putanju izgradnje projekta, mogu se koristiti klase koje pruลพa Sikuli. Maven projekt moลพe umjesto toga deklarirati isti artefakt kao ovisnost.
Razred ekrana u Sikulima
Klasa Screen je osnovna klasa za sve metode koje pruลพa Sikuli. Klasa Screen sadrลพi unaprijed definirane metode za sve uobiฤajene operacije na elementima zaslona kao ลกto su klik, dvostruki klik, unos u tekstualni okvir, zadrลพavanje miลกa iznad polja itd. U nastavku je popis ฤesto koriลกtenih metoda koje pruลพa klasa Screen.
| 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
Dok Screen djeluje na obiฤni naziv slike, klasa Pattern se koristi za povezivanje slikovne datoteke s dodatnim atributima kako bi se jedinstveno identificirao element. Kao parametar uzima putanju slike.
Pattern p = new Pattern(โPath of imageโ);
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(); |
Code Primjer prijenosa datoteke pomoฤu Sikulija
Donji kod objaลกnjava koriลกtenje Sikulija za prijenos datoteka u Chromeu.
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(); } }
Code Objaลกnjenje
Korak 1) Prva izjava ukljuฤuje postavljanje putanje izvrลกnog upravljaฤkog programa za chrome.
System.setProperty("webdriver.chrome.driver", "D:\\ chromedriver.exe");
โ ๏ธ Napomena o verziji: Selenium 4 rjeลกava binarni fajl upravljaฤkog programa putem Selenium Manager, tako da je ovaj redak sada opcionalan. ฤuva se onako kako ga je izvor napisao.
Korak 2) Koristite alat za snimanje zaslona kao ลกto je Snipping Tool za snimanje zaslona skoฤnog prozora 'FileTextBox' i gumb 'Otvori', kao ลกto je prikazano dolje.
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'.
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 gumb Otvori 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 aplikacije za prijenos demo datoteka: https://demo.guru99.com/test/image_upload/index.php
driver = new ChromeDriver(); driver.get("https://demo.guru99.com/test/image_upload/index.php");
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
Buduฤi da podudaranje ovisi o pikselima, ponovno snimite svaku referentnu sliku kad god se suฤelje restilizira. Ta krhkost je razlog zaลกto timovi rezerviraju Sikuli za skoฤne prozore. jednostavno rukovanje datotekama WebDrivera ne moลพe dosegnuti.






