Sikuli Tutorial for Selenium Automatizálás
⚡ Okos összefoglaló
A Sikuli automatizálja a grafikus felületet azáltal, hogy a helymeghatározók helyett a tárolt képernyőképeket ismeri fel, ami lehetővé teszi a Selenium tesztvezetés Windows felugró ablakok, natív fájlpárbeszédablakok és Flash objektumok, amelyeket a WebDriver önmagában nem tud elérni.
Miben van Sikuli? Selenium?
Sikuli egy nyílt forráskódú grafikus felhasználói felület alapú tesztautomatizálási eszköz. Főleg weblapok elemeivel való interakcióra és ablak alapú felugró ablakok kezelésére használják. A Sikuli az „Image Recognition” és a „Control GUI” technikát használja a weboldalak elemeivel és az ablakok előugró ablakaival való interakcióhoz. A Sikuliban az összes webelem képként készül, és a projekten belül tárolódik.
⚠️ Elnevezési megjegyzés: a projektet ma is fenntartják SikuliX, a Maven Centralon jelent meg, mint com.sikulix:sikulixapiAz alábbi osztálynevek változatlanok.
Hogyan kell használni a Sikuli-t Selenium Webdriver
A Sikuli integrálható a következőkkel: Selenium WebDriver a Sikuli JAR fájl használatával, az alábbi két lépésben.
1. lépés) Letöltés a Sikuli JAR fájlt az alábbiak közül URL, és pltracMásold át a ZIP fájl tartalmát egy mappába.
https://mvnrepository.com/artifact/com.sikulix/sikulixapi/2.0.5
Step 2) Hozzon létre egy új JAVA projektet Eclipse és add hozzá a JAR fájlt a build path-hez, valamint a szelén jar fájlokat a jobb gombbal a projektre kattintva -> Build Path -> Configure Build Path menüpontban, az alábbiak szerint.
Miután hozzáadtad a JAR fájlt a projekt build path-jához, a Sikuli által biztosított osztályok használhatók. Egy Maven projekt ugyanezt az artefaktust deklarálhatja függőségként is.
Képernyőóra Sikuliban
A Screen osztály az alaposztály a Sikuli által biztosított összes metódushoz. A Screen osztály előre definiált metódusokat tartalmaz a képernyő elemein gyakran végrehajtott műveletekhez, mint például a kattintás, dupla kattintás, szövegdobozba való bemenet, egérmutató stb. Az alábbiakban a Screen osztály által biztosított gyakran használt metódusok listája látható.
| Módszer | Leírás | Szintaxis |
|---|---|---|
| Kattints | Ezzel a módszerrel egy elemre kattintanak a képernyőn, paraméterként a kép nevét használva. |
Képernyő s = new Screen(); s.click("QA.png"); |
| doubleClick | Ezzel a módszerrel duplán kattintanak egy elemre. Paraméterként elfogadja a kép nevét. |
Képernyő s = new Screen(); s.doubleClick("QA.png"); |
| típus | Ez a módszer arra szolgál, hogy bemeneti értéket adjon egy elemnek. Paraméterként elfogadja a kép nevét és a küldendő szöveget. |
s.type("QA.png","SZÖVEG"); |
| lebeg | Ez a módszer arra szolgál, hogy az egérmutatót egy elem fölé vigye. Paraméterként elfogadja a kép nevét. |
s.hover("QA.png"); |
| Találjon | Ez a módszer egy adott elem megkeresésére szolgál a képernyőn. Paraméterként elfogadja a kép nevét. |
s.find("QA.png"); |
Mintaóra Sikuliban
Ahol a Screen egy egyszerű képnévre reagál, a Pattern osztály további attribútumokkal társítja a képfájlt az elem egyedi azonosítása érdekében. Paraméterként a kép elérési útját veszi igénybe.
Pattern p = new Pattern(“Path of image”);
Az alábbiak a Pattern osztály leggyakrabban használt metódusai.
| Módszer | Leírás | Szintaxis |
|---|---|---|
| getFileName | A Pattern objektumban található fájlnevet adja vissza. |
Pattern p = new Pattern("D:\Demo\QA.png"); String fájlnév = p.getFileName(); |
| hasonló | Ez a módszer egy új Pattern objektumot ad vissza, amelynek hasonlósága egy megadott értékre van beállítva. Paraméterként elfogadja a 0 és 1 közötti hasonlósági értéket. A Sikuli megkeresi az összes olyan elemet, amely a megadott hasonlósági tartományba esik, és egy új mintaobjektumot ad vissza. |
minta p1 = p.hasonló(0.7f); |
| Pontos | Ez a metódus egy új mintaobjektumot ad vissza, amelynek hasonlósága 1-re van állítva. Csak a megadott elem pontos egyezését keresi. |
Minta p1 = p.pontos(); |
Code Példa fájlfeltöltésre Sikuli használatával
Az alábbi kód a Sikuli használatát ismerteti fájlfeltöltéshez Chrome-ban.
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 Magyarázat
Step 1) Az első utasítás magában foglalja az illesztőprogram végrehajtható elérési útjának beállítását a chrome számára.
System.setProperty("webdriver.chrome.driver", "D:\\ chromedriver.exe");
⚠️ Verzió megjegyzés: Selenium 4 feloldja a meghajtó bináris fájlját a következőn keresztül: Selenium Manager, így ez a sor mostantól opcionális. Úgy marad, ahogyan a forrás írta.
Step 2) Használjon képernyőfogó eszközt, mint pl Snipping Tool képernyőképek készítéséhez a Windows felugró 'FileTextBox„és a „Megnyitás” gombra, az alábbiak szerint.
Így kell kinéznie a képernyőképednek:
A Windows fájlbeviteli szövegmező és a megnyitás gomb képei a „FileText” mappában tárolódnakBox.PNG” és „OpenButton.PNG”.
Példa: Ha automatizálni szeretné a jegyzettömb megnyitásának műveletét, akkor el kell mentenie a jegyzettömb asztali ikonjának képét egy PNG-fájlba, és kattintásos műveletet kell végrehajtania rajta.
Esetünkben felismeri a fájlbeviteli szövegmezőt és a Megnyitás gombot a Windows felugró ablak a tárolt képek segítségével. Ha a képernyő felbontása képrögzítésről teszt szkript-végrehajtásra változik, a Sikuli viselkedése következetlen lenne. Ezért mindig tanácsos a tesztszkriptet ugyanazzal a felbontással futtatni, mint a képek rögzítése. A képek pixelméretének megváltoztatása azt eredményezi, hogy Sikuli FindFailed kivételt dob.
Step 3) A következő utasítások a Screen és Pattern osztályokhoz tartozó objektumok létrehozását tartalmazzák. Hozzon létre egy új képernyőobjektumot. Állítsa be a feltölteni kívánt fájl elérési útját paraméterként a Pattern objektumhoz.
Screen s = new Screen(); Pattern fileInputTextBox = new Pattern(filepath + "FileTextBox.PNG"); Pattern openButton = new Pattern(filepath + "OpenButton.PNG");
Step 4) Az alábbi állítások a Chrome böngésző megnyitását jelentik a következővel: URL egy demó fájl feltöltési alkalmazásról: https://demo.guru99.com/test/image_upload/index.php
driver = new ChromeDriver(); driver.get("https://demo.guru99.com/test/image_upload/index.php");
Step 5) Kattintson a fájl kiválasztása gombra az alábbi utasítás segítségével
driver.findElement(By.xpath(".//*[@id='photoimg']")).click();
Step 6) Várja meg, amíg megjelenik a felugró ablak. A Várakozás módszerrel kezeljük a Tallózás gombra kattintás után felugró ablakok megnyitásához kapcsolódó késleltetést.
s.wait(fileInputTextBox, 20);
Step 7) Írja be a fájl elérési útját a beviteli fájl szövegmezőjébe, és kattintson a Megnyitás gombra
s.type(fileInputTextBox, inputFilePath + "Test.docx");
s.click(openButton);
Step 8) Zárja be a böngészőt
driver.close();
teljesítmény
Kezdetben a szkript megnyitja a Chrome böngészőt
A „Fájl kiválasztása” gombra kattintva megjelenik a Windows fájl felugró ablaka. Beírja az adatokat a Fájlbevitel szövegmezőbe, és rákattint a „Megnyitás” gombra
Az alábbi képernyő jelenik meg, miután a fájl feltöltése befejeződött, és bezárja a böngészőt
Mivel az illesztés a pixelektől függ, minden referenciaképet újra kell rögzíteni, amikor a felületet újratervezik. Ez a törékenység az oka annak, hogy a csapatok a Sikulit felugró ablakokhoz tartják fenn. egyszerű WebDriver fájlkezelés nem érheti el.






