Poradnik Sikuli dla Selenium Automatyzacja
W czym jest Sikuli Selenium?
Sikuli jest narzฤdziem do automatyzacji testรณw opartym na otwartym kodzie ลบrรณdลowym GUI. Jest gลรณwnie uลผywane do interakcji z elementami stron internetowych i obsลugi okien pop-up. Sikuli wykorzystuje technikฤ โImage Recognitionโ i โControl GUIโ do interakcji z elementami stron internetowych i okien pop-up. W Sikuli wszystkie elementy internetowe sฤ traktowane jako obrazy i przechowywane w projekcie.
Jak uลผywaฤ Sikuli z Selenium Sterownik internetowy
Sikuli moลผna zintegrowaฤ z selenium webdriver przy uลผyciu pliku JAR Sikuli.
Poniลผej znajduje siฤ lista krokรณw konfiguracji Sikuli z selenium webdriver.
Krok 1) Pobierz plik Sikuli JAR z poniลผszego adresu URL i wyodrฤbnij zawartoลฤ pliku ZIP do folderu.
Krok 2) Utwรณrz nowy projekt JAVA w Eclipse i dodaj plik JAR do ลcieลผki kompilacji, wraz z plikami jar selenu, klikajฤ c prawym przyciskiem myszy na projekcie -> ลcieลผka kompilacji -> Konfiguruj ลcieลผkฤ kompilacji
Po dodaniu pliku JAR do ลcieลผki budowania projektu moลผna uลผywaฤ klas dostarczonych przez Sikuli.
Zajฤcia ekranowe w Sikuli
Klasa Screen to klasy bazowe dla wszystkich metod dostarczanych przez Sikuli. Klasa Screen zawiera predefiniowane metody dla wszystkich powszechnie wykonywanych operacji na elementach ekranu, takich jak klikniฤcie, dwukrotne klikniฤcie, wprowadzanie danych do pola tekstowego, najechanie kursorem itp. Poniลผej znajduje siฤ lista powszechnie uลผywanych metod dostarczanych przez klasฤ Screen.
| Metoda wykonania | OPIS | Skลadnia |
|---|---|---|
| Kliknij | Ta metoda sลuลผy do klikniฤcia elementu na ekranie przy uลผyciu nazwy obrazu jako parametru. | Ekran s = nowy ekran();
s.click(โQA.pngโ); |
| podwรณjne klikniฤcie | Ta metoda jest uลผywana do dwukrotnego klikniฤcia na elemencie. Akceptuje nazwฤ obrazu jako parametr. | Ekran s = nowy ekran();
s.doubleClick(โQA.pngโ); |
| Typ | Ta metoda sลuลผy do podawania wartoลci wejลciowej do elementu. Akceptuje nazwฤ obrazu i tekst do przesลania jako parametry. |
s.type(โQA.pngโ,โTEKSTโ); |
| Wahaฤ siฤ | Ta metoda sลuลผy do najechania kursorem na element. Akceptuje nazwฤ obrazu jako parametr. |
s.hover(โQA.pngโ); |
| Znajdลบ | Metodฤ tฤ moลผna znaleลบฤ konkretny element na ekranie. Akceptuje nazwฤ obrazu jako parametr. |
s.find(โQA.pngโ); |
Zajฤcia ze wzorami w Sikuli
Klasa Pattern sลuลผy do powiฤ zania pliku obrazu z dodatkowymi atrybutami w celu jednoznacznej identyfikacji elementu. Jako parametr przyjmuje ลcieลผkฤ obrazu.
Wzorzec p = nowy Wzorzec(โลcieลผka obrazuโ);
Poniลผej przedstawiono najczฤลciej uลผywane metody klasy Pattern.
| Metoda wykonania | OPIS | Skลadnia |
|---|---|---|
| pobierzNazwฤPliku | Zwraca nazwฤ pliku zawartฤ w obiekcie Pattern. |
Wzorzec p = nowy Wzorzec(โD:\Demo\QA.pngโ); String nazwa pliku = p.getFileName(); |
| podobny | Ta metoda zwraca nowy obiekt Pattern z podobieลstwem ustawionym na okreลlonฤ wartoลฤ. Jako parametr przyjmuje wartoลฤ podobieลstwa od 0 do 1. Sikuli szuka wszystkich elementรณw mieszczฤ cych siฤ w okreลlonym zakresie podobieลstwa i zwraca nowy obiekt wzorca. |
Wzรณr p1 = p.podobny(0.7f); |
| Dokลadny | Ta metoda zwraca nowy obiekt wzorca z podobieลstwem ustawionym na 1. Wyszukuje tylko dokลadne dopasowanie okreลlonego elementu. |
Wzรณr p1 = p.exact(); |
Przykลad kodu do przesyลania plikรณw przy uลผyciu Sikuli
Poniลผszy kod wyjaลnia uลผycie Sikuli do przesyลania plikรณw 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();
}
}
Wyjaลnienie kodu:
Krok 1) Pierwsza instrukcja dotyczy ustawienia ลcieลผki pliku wykonywalnego sterownika dla Chrome.
System.setProperty("webdriver.chrome.driver", "D:\\ chromedriver.exe");
Krok 2) Uลผyj narzฤdzia do zrzutu ekranu, takiego jak Snipping Tool aby wykonaฤ zrzuty ekranu okna popup 'FileTextBox' i 'Otwรณrz'.
Tak powinien wyglฤ daฤ Twรณj zrzut ekranu: -
Obrazy dla pola tekstowego wprowadzania pliku systemu Windows i przycisku otwierania sฤ przechowywane w folderze โFileTextโBox.PNGโ i โOpenButton.PNGโ.
Sikuli wykorzystuje technikฤ rozpoznawania obrazu do rozpoznawania elementรณw na ekranie. Znajduje elementy na ekranie wyลฤ cznie na podstawie ich obrazรณw.
Przykลad: Jeลli chcesz zautomatyzowaฤ operacjฤ otwierania Notatnika, musisz zapisaฤ obraz ikony Notatnika na pulpicie w pliku PNG i kliknฤ ฤ go.
W naszym przypadku rozpoznaje pole tekstowe wprowadzania pliku i otwiera przycisk Windows popup uลผywajฤ cy zapisanych obrazรณw. Jeลli rozdzielczoลฤ ekranu zmienia siฤ od przechwytywania obrazu do wykonywania skryptu testowego, zachowanie Sikuli byลoby niespรณjne. Dlatego zawsze zaleca siฤ uruchamianie skryptu testowego w tej samej rozdzielczoลci, w ktรณrej przechwytywane sฤ obrazy. Zmiana rozmiaru pikseli obrazรณw spowoduje, ลผe Sikuli zgลosi wyjฤ tek FindFailed.
Krok 3) Kolejne instrukcje obejmujฤ utworzenie obiektรณw dla klas Screen i Pattern. Utwรณrz nowy obiekt ekranowy. Ustaw ลcieลผkฤ pliku, ktรณry chcesz przesลaฤ jako parametr do obiektu Pattern.
Screen s = new Screen(); Pattern fileInputTextBox = new Pattern(filepath + "FileTextBox.PNG"); Pattern openButton = new Pattern(filepath + "OpenButton.PNG");
Krok 4) Poniลผsze instrukcje dotyczฤ otwierania przeglฤ darki Chrome z adresem URL: https://demo.guru99.com/test/image_upload/index.php
driver = new ChromeDriver();
driver.get("https://demo.guru99.com/test/image_upload/index.php");
Powyลผszy adres URL to aplikacja demonstracyjna demonstrujฤ ca funkcjonalnoลฤ przesyลania plikรณw.
Krok 5) Kliknij przycisk wybierz plik, korzystajฤ c z poniลผszej instrukcji
driver.findElement(By.xpath(".//*[@id='photoimg']")).click();
Krok 6) Poczekaj na pojawienie siฤ okna pop-up. Metoda wait jest uลผywana do obsลugi opรณลบnienia zwiฤ zanego z otwieraniem okien pop-up po klikniฤciu przycisku przeglฤ dania.
s.wait(fileInputTextBox, 20);
Krok 7) Wpisz ลcieลผkฤ pliku w polu tekstowym pliku wejลciowego i kliknij przycisk Otwรณrz
s.type(fileInputTextBox, inputFilePath + "Test.docx"); s.click(openButton);
Krok 8) Zamknij przeglฤ darkฤ
driver.close();
Wyjลcie:
Poczฤ tkowo skrypt otwiera przeglฤ darkฤ Chrome
Kliknij przycisk โWybierz plikโ, pojawi siฤ okno dialogowe pliku Windows. Wprowadลบ dane do pola tekstowego โWprowadลบ plikโ i kliknij przycisk โOtwรณrzโ
Poniลผszy ekran jest wyลwietlany po zakoลczeniu przesyลania pliku i zamkniฤciu przeglฤ darki
Wniosek
Sikuli jest uลผywany do ลatwego obsลugiwania obiektรณw flash na stronie internetowej i okien pop-up. Sikuli najlepiej sprawdza siฤ, gdy elementy interfejsu uลผytkownika nie zmieniajฤ siฤ czฤsto. Ze wzglฤdu na tฤ wadฤ, z perspektywy testรณw automatyzacji, Sikuli jest mniej preferowany w porรณwnaniu z innymi frameworkami, takimi jak Robot i AutoIT.







