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

Podsumowanie

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.