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.

https://mvnrepository.com/artifact/com.sikulix/sikulixapi/2.0.5

Uลผyj Sikuli z Selenium Sterownik internetowy

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

uลผyj Sikuli With Selenium Sterownik internetowy

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

Przykล‚ad kodu do przesyล‚ania plikรณw za pomocฤ… Sikuli

Tak powinien wyglฤ…daฤ‡ Twรณj zrzut ekranu: -

Przykล‚ad kodu do przesyล‚ania plikรณw za pomocฤ… Sikuli

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

Przykล‚ad kodu do przesyล‚ania plikรณw za pomocฤ… Sikuli

Kliknij przycisk โ€žWybierz plikโ€, pojawi siฤ™ okno dialogowe pliku Windows. Wprowadลบ dane do pola tekstowego โ€žWprowadลบ plikโ€ i kliknij przycisk โ€žOtwรณrzโ€

Przykล‚ad kodu do przesyล‚ania plikรณw za pomocฤ… Sikuli

Poniลผszy ekran jest wyล›wietlany po zakoล„czeniu przesyล‚ania pliku i zamkniฤ™ciu przeglฤ…darki

Przykล‚ad kodu do przesyล‚ania plikรณw za pomocฤ… Sikuli

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.

Podsumuj ten post nastฤ™pujฤ…co: