Návod na Sikuli pro Selenium Automatizace

V čem je Sikuli Selenium?

Sikuli je open-source nástroj pro automatizaci testování založený na GUI. Používá se hlavně pro interakci s prvky webových stránek a manipulaci s vyskakovacími okny. Sikuli používá techniku ​​„Rozpoznávání obrázků“ a „Ovládací GUI“ k interakci s prvky webových stránek a vyskakovacích oken. V Sikuli jsou všechny prvky webu převzaty jako obrázky a uloženy v projektu.

Jak používat Sikuli s Selenium Webdriver

Sikuli lze integrovat se selenovým webdriverem pomocí souboru Sikuli JAR.

Níže uvedená sekvence je seznam kroků pro konfiguraci Sikuli se selenovým webdriverem.

Krok 1) Stáhnout soubor Sikuli JAR z níže uvedené adresy URL a extrahujte obsah souboru ZIP do složky.

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

Použijte Sikuli With Selenium Webdriver

Krok 2) Vytvořte nový JAVA projekt v Eclipse a přidejte soubor JAR k cestě sestavení spolu se soubory jar selenu pomocí pravého kliknutí na projekt -> Build Path -> Configure Build Path

použijte Sikuli With Selenium Webdriver

Jakmile přidáte soubor JAR do cesty sestavení projektu, lze použít třídy poskytované Sikuli.

Třída obrazovky v Sikuli

Třída obrazovky je základní třída pro všechny metody poskytované Sikuli. Třída obrazovky obsahuje předdefinované metody pro všechny běžně prováděné operace s prvky obrazovky, jako je kliknutí, dvojité kliknutí, poskytnutí vstupu do textového pole, najetí myší atd. Níže je uveden seznam běžně používaných metod poskytovaných třídou Screen.

Metoda Description Syntax
klikněte Tato metoda se používá ke kliknutí na prvek na obrazovce s použitím názvu obrázku jako parametru. Screen s = new Screen();

s.click(“QA.png”);

dvojitým kliknutím Tato metoda se používá k dvojitému kliknutí na prvek. Jako parametr přijímá název obrázku. Screen s = new Screen();

s.doubleClick(“QA.png”);

Typ Tato metoda se používá k poskytnutí vstupní hodnoty prvku. Jako parametry přijímá název obrázku a text k odeslání.

s.type(“QA.png”,”TEXT”);

Vznášet se Tato metoda se používá k najetí myší na prvek. Jako parametr přijímá název obrázku.

s.hover(“QA.png”);

Najít Tato metoda se používá k vyhledání konkrétního prvku na obrazovce. Jako parametr přijímá název obrázku.

s.find(“QA.png”);

Třída vzorů v Sikuli

Třída Pattern se používá k přidružení souboru obrázku k dalším atributům, aby byl prvek jednoznačně identifikován. Jako parametr bere cestu obrázku.

Pattern p = new Pattern(“Cesta obrázku”);

Níže jsou uvedeny nejběžněji používané metody třídy Pattern.

Metoda Description Syntax
getFileName Vrátí název souboru obsažený v objektu Pattern.

Vzor p = nový vzor(“D:\Demo\QA.png”);

String filename = p.getFileName();

podobný Tato metoda vrací nový objekt Pattern s podobností nastavenou na zadanou hodnotu. Jako parametr přijímá hodnotu podobnosti mezi 0 až 1. Sikuli vyhledá všechny prvky, které spadají do zadaného rozsahu podobnosti, a vrátí nový objekt vzoru.

Vzor p1 = p.similar(0.7f);

Přesný Tato metoda vrací nový objekt vzoru s podobností nastavenou na 1. Hledá pouze přesnou shodu zadaného prvku.

Vzor p1 = p.exact();

Příklad kódu pro nahrání souboru pomocí Sikuli

Níže uvedený kód vysvětluje použití Sikuli pro nahrávání souborů 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();
    }
}

Vysvětlení kódu:

Krok 1) První příkaz zahrnuje nastavení cesty ke spustitelnému ovladači pro chrome.

System.setProperty("webdriver.chrome.driver", "D:\\ chromedriver.exe");

Krok 2) Použijte screengrab nástroj jako např Snipping Tool pořídit snímky obrazovky vyskakovacího okna „FileTextBox“ a tlačítko „Otevřít“.

Příklad kódu pro nahrání souboru pomocí Sikuli

Takto by měl váš snímek obrazovky vypadat:

Příklad kódu pro nahrání souboru pomocí Sikuli

Obrázky pro textové pole pro zadávání souborů systému Windows a tlačítko Otevřít jsou uloženy v 'FileTextBox.PNG' a 'OpenButton.PNG'.

Sikuli používá techniku ​​rozpoznávání obrazu k rozpoznání prvků na obrazovce. Najde prvky na obrazovce pouze na základě jejich obrázků.

Příklad: Pokud chcete automatizovat operaci otevírání poznámkového bloku, musíte uložit obrázek ikony poznámkového bloku na ploše do souboru PNG a provést na něj klikání.

V našem případě rozpozná textové pole pro zadání souboru a otevře tlačítko na Windows vyskakovací okno pomocí uložených obrázků. Pokud se rozlišení obrazovky změní od snímání obrazu k provedení testovacího skriptu, chování Sikuli by bylo nekonzistentní. Proto je vždy vhodné spouštět testovací skript ve stejném rozlišení, ve kterém jsou snímky pořizovány. Změna velikosti obrázků v pixelech způsobí, že Sikuli vyvolá výjimku FindFailed.

Krok 3) Další příkazy zahrnují vytvoření objektů pro třídy Screen a Pattern. Vytvořte nový objekt obrazovky. Nastavte cestu k souboru, který chcete nahrát, jako parametr do objektu Vzor.

Screen s = new Screen();
Pattern fileInputTextBox = new Pattern(filepath + "FileTextBox.PNG");
Pattern openButton = new Pattern(filepath + "OpenButton.PNG");

Krok 4) Níže uvedená prohlášení zahrnují otevření prohlížeče Chrome pomocí adresy URL: https://demo.guru99.com/test/image_upload/index.php

driver = new ChromeDriver();
driver.get("https://demo.guru99.com/test/image_upload/index.php");

Výše uvedená adresa URL je ukázková aplikace pro demonstraci funkce nahrávání souborů.

Krok 5) Klikněte na tlačítko vybrat soubor pomocí níže uvedeného příkazu

driver.findElement(By.xpath(".//*[@id='photoimg']")).click();

Krok 6) Počkejte, až se objeví vyskakovací okno. Metoda čekání se používá ke zpracování zpoždění spojeného s otevřením okna, které se objeví po kliknutí na tlačítko procházet.

s.wait(fileInputTextBox, 20);

Krok 7) Zadejte cestu k souboru do textového pole vstupního souboru a klikněte na tlačítko Otevřít

s.type(fileInputTextBox, inputFilePath + "Test.docx");
s.click(openButton);

Krok 8) Zavřete prohlížeč

driver.close();

Výstup:

Zpočátku skript otevře prohlížeč Chrome

Příklad kódu pro nahrání souboru pomocí Sikuli

Kliknutím na tlačítko „Vybrat soubor“ se zobrazí vyskakovací okno se souborem systému Windows. Zadá data do textového pole File Input a klikne na tlačítko 'Otevřít'

Příklad kódu pro nahrání souboru pomocí Sikuli

Po dokončení nahrávání souboru a zavření prohlížeče se zobrazí obrazovka níže

Příklad kódu pro nahrání souboru pomocí Sikuli

Proč investovat do čističky vzduchu?

Sikuli se používá ke snadné manipulaci s flashovými objekty na webové stránce a vyskakovacími okny. Sikuli se nejlépe používá, když se prvky uživatelského rozhraní často nemění. Vzhledem k této nevýhodě je z hlediska testování automatizace Sikuli dávána menší přednost ve srovnání s jinými frameworky, jako jsou Robot a AutoIT.