Sikuli Tutorial for Selenium Automatizálás

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.

Hogyan kell használni a Sikuli-t Selenium Webdriver

A Sikuli a Sikuli JAR fájl segítségével integrálható szelén webdriverrel.

Az alábbi sorrend a Sikuli szelén webdriverrel való konfigurálásához szükséges lépések listája.

1. lépés) Letöltés a Sikuli JAR fájlt az alábbi URL-ről, és csomagolja ki a ZIP fájl tartalmát egy mappába.

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

Használja a Sikulit együtt Selenium Webdriver

Step 2) Hozzon létre egy új JAVA projektet Eclipse és adja hozzá a JAR fájlt az összeállítási útvonalhoz, valamint a szelén jar fájlokat a jobb gombbal a projektre -> Build Path -> Build Path konfigurálása

használja Sikuli With Selenium Webdriver

Miután hozzáadta a JAR fájlt a projekt felépítési útvonalához, a Sikuli által biztosított osztályok használhatók.

Képernyőóra Sikuliban

A képernyőosztály a Sikuli által biztosított összes metódus alaposztálya. A képernyőosztály előre definiált metódusokat tartalmaz a képernyőelemeken gyakran végrehajtott összes művelethez, mint például a kattintás, a dupla kattintás, a szövegdobozok bevitele, az egérmutató stb.

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

A mintaosztály arra szolgál, hogy a képfájlt további attribútumokkal társítsa az elem egyedi azonosítása érdekében. Paraméterként a kép útvonalát veszi fel.

Pattern p = new Pattern(“Kép útvonala”);

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();

Kódpélda fájlfeltöltéshez Sikuli használatával

Az alábbi kód elmagyarázza a Sikuli használatát fájlfeltöltéshez 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();
    }
}

Kód magyarázata:

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");

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 'Megnyitás' gombot.

Kódpélda fájlfeltöltéshez Sikuli használatával

Így kell kinéznie a képernyőképének: -

Kódpélda fájlfeltöltéshez Sikuli használatával

A Windows fájlbeviteli szövegmező és a megnyitás gomb képei a „FileText” mappában tárolódnakBox.PNG” és „OpenButton.PNG”.

Sikuli a képfelismerés technikáját használja a képernyőn megjelenő elemek felismerésére. Kizárólag képeik alapján talál elemeket a képernyőn.

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 megnyílik a gomb 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 kijelentések a Chrome böngésző megnyitását jelentik az URL-lel: https://demo.guru99.com/test/image_upload/index.php

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

A fenti URL egy demóalkalmazás a fájlfeltöltési funkciók bemutatására.

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();

output:

Kezdetben a szkript megnyitja a Chrome böngészőt

Kódpélda fájlfeltöltéshez Sikuli használatával

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

Kódpélda fájlfeltöltéshez Sikuli használatával

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

Kódpélda fájlfeltöltéshez Sikuli használatával

Következtetés

A Sikuli a weblapokon lévő flash objektumok és az ablakok felugró ablakainak egyszerű kezelésére szolgál. A Sikulit akkor célszerű használni, ha a felhasználói felület elemei nem változnak gyakran. Ennek a hátránynak köszönhetően az automatizálási tesztelés szempontjából a Sikuli kevésbé előnyben részesített más keretrendszerekhez, például a Robothoz és az AutoIT-hez képest.