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
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
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“.
Takto by měl váš snímek obrazovky vypadat:
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
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'
Po dokončení nahrávání souboru a zavření prohlížeče se zobrazí obrazovka níže
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.