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







