Návod na Sikuli pro Selenium Automatizace
⚡ Chytré shrnutí
Sikuli automatizuje grafické rozhraní rozpoznáváním uložených snímků obrazovky namísto lokátorů, což umožňuje... Selenium zkušební jízda Windows vyskakovací okna, nativní dialogová okna souborů a objekty Flash, ke kterým se WebDriver sám nedostane.
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.
⚠️ Poznámka k názvu: projekt je dodnes udržován jako SikuliX, publikováno na Maven Central jako com.sikulix:sikulixapiNíže uvedené názvy tříd zůstávají nezměněny.
Jak používat Sikuli s Selenium Webdriver
Sikuli lze integrovat s Selenium WebDriver pomocí souboru Sikuli JAR ve dvou níže uvedených krocích.
Krok 1) Stáhnout soubor Sikuli JAR z níže uvedeného URLa extracobsah ZIP souboru 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 do cesty sestavení spolu se soubory JAR Selenium pomocí kliknutí pravým tlačítkem myši na projekt -> Cesta sestavení -> Konfigurovat cestu sestavení, jak je znázorněno níže.
Jakmile přidáte soubor JAR do cesty sestavení projektu, můžete použít třídy poskytované Sikuli. Projekt Maven může místo toho deklarovat stejný artefakt jako závislost.
Třída obrazovky v Sikuli
Třída Screen je základní třídou pro všechny metody poskytované Sikuli. Třída Screen obsahuje předdefinované metody pro všechny běžně prováděné operace s prvky obrazovky, jako je kliknutí, dvojité kliknutí, zadávání 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
Zatímco třída Screen pracuje s názvem prostého obrázku, třída Pattern se používá k přiřazení souboru obrázku k dalším atributům pro jednoznačnou identifikaci prvku. Jako parametr bere cestu k obrázku.
Pattern p = new Pattern(“Path of image”);
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(); |
Code Příklad nahrání souboru pomocí Sikuli
Níže uvedený kód vysvětluje použití Sikuli pro nahrávání souborů v Chromu.
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(); } }
Code Vysvětlení
Krok 1) První příkaz zahrnuje nastavení cesty ke spustitelnému ovladači pro chrome.
System.setProperty("webdriver.chrome.driver", "D:\\ chromedriver.exe");
⚠️ Poznámka k verzi: Selenium 4 řeší binární soubor ovladače pomocí Selenium Manager, takže tento řádek je nyní volitelný. Zůstane zachován tak, jak jej napsal zdroj.
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', jak je uvedeno níže.
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'.
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 tlačítko Otevřít 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é příkazy zahrnují otevření prohlížeče Chrome pomocí URL aplikace pro nahrávání demo souborů: https://demo.guru99.com/test/image_upload/index.php
driver = new ChromeDriver(); driver.get("https://demo.guru99.com/test/image_upload/index.php");
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
Protože porovnávání závisí na pixelech, je třeba znovu zachytit každý referenční obrázek při každé změně stylu rozhraní. Tato křehkost je důvodem, proč týmy vyhrazují Sikuli pro vyskakovací okna. jednoduchá manipulace se soubory WebDriver nemůže dosáhnout.






