Handledning för Sikuli Selenium Automation

Vad är Sikuli i Selenium?

Sikuli är ett GUI-baserat testautomatiseringsverktyg med öppen källkod. Det används främst för att interagera med delar av webbsidor och hantera fönsterbaserade popup-fönster. Sikuli använder tekniken "Image Recognition" och "Control GUI" för att interagera med delar av webbsidor och popup-fönster i fönster. I Sikuli tas alla webbelement som bilder och lagras i projektet.

Hur man använder Sikuli med Selenium Webdriver

Sikuli kan integreras med selenwebdriver med hjälp av Sikuli JAR-filen.

Följande sekvens är listan med steg för att konfigurera Sikuli med selenwebdrivrutin.

Steg 1) Ladda ner Sikuli JAR-filen från nedanstående URL och extrahera innehållet i ZIP-filen till en mapp.

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

Använd Sikuli med Selenium Webdriver

Steg 2) Skapa ett nytt JAVA-projekt i Eclipse och lägg till JAR-filen för att bygga sökvägen, tillsammans med selen jar-filer med högerklicka på projektet -> Bygg sökväg -> Konfigurera byggväg

använd Sikuli With Selenium Webdriver

När du har lagt till JAR-filen till projektbyggningsvägen kan klasser från Sikuli användas.

Skärmklass i Sikuli

Skärmklass är basklasserna för alla metoder som tillhandahålls av Sikuli. Skärmklassen innehåller fördefinierade metoder för alla vanliga operationer på skärmelement som klick, dubbelklick, inmatning till en textruta, hovring, etc. Nedan är listan över vanliga metoder som tillhandahålls av skärmklassen.

Metod BESKRIVNING syntax
Klicka Denna metod används för att klicka på ett element på skärmen med bildnamnet som parameter. Skärm s = ny skärm();

s.click(“QA.png”);

dubbelklicka Denna metod används för att dubbelklicka på ett element. Den accepterar bildnamn som parameter. Skärm s = ny skärm();

s.doubleClick(“QA.png”);

Typ Den här metoden används för att ge ingångsvärde till ett element. Den accepterar bildnamnet och texten som ska skickas som parametrar.

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

Hovra Denna metod används för att hålla muspekaren över ett element. Den accepterar bildnamn som parameter.

s.hover(“QA.png”);

Hitta Denna metod används för att hitta ett specifikt element på skärmen. Den accepterar bildnamn som parameter.

s.find(“QA.png”);

Mönsterklass i Sikuli

Mönsterklass används för att associera bildfilen med ytterligare attribut för att unikt identifiera elementet. Den tar bildens sökväg som en parameter.

Pattern p = new Pattern(“Path of image”);

Följande är de mest använda metoderna i Pattern-klassen.

Metod BESKRIVNING syntax
getFileName Returnerar filnamnet som finns i Pattern-objektet.

Mönster p = nytt mönster(“D:\Demo\QA.png”);

Sträng filnamn = p.getFileName();

liknande Denna metod returnerar ett nytt Pattern-objekt med likhet inställd på ett angivet värde. Den accepterar likhetsvärdet mellan 0 till 1 som en parameter. Sikuli letar efter alla element som faller inom det angivna likhetsintervallet och returnerar ett nytt mönsterobjekt.

Mönster p1 = p.similar(0.7f);

Exakt Den här metoden returnerar ett nytt mönsterobjekt med likheten satt till 1. Den letar bara efter en exakt matchning av det angivna elementet.

Mönster p1 = p.exact();

Kodexempel för filuppladdning med Sikuli

Nedanstående kod förklarar användningen av Sikuli för filuppladdning i 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();
    }
}

Kodförklaring:

Steg 1) Den första satsen innebär att ställa in drivrutinens körbara sökväg för chrome.

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

Steg 2) Använd ett screengrab-verktyg som t.ex Snipping Tool för att ta skärmdumpar av windows popup 'FileTextBox' och 'Öppna'-knappen.

Kodexempel för filuppladdning med Sikuli

Så här ska din skärmdump se ut:

Kodexempel för filuppladdning med Sikuli

Bilder för Windows-filinmatningstextrutan och öppna-knappen lagras i 'FileTextBox.PNG' och 'OpenButton.PNG'.

Sikuli använder tekniken med bildigenkänning för att känna igen element på skärmen. Den hittar element på skärmen enbart baserat på deras bilder.

Exempel: Om du vill automatisera operationen för att öppna anteckningsblocket måste du lagra bilden av en skrivbordsikon för anteckningsblock i en PNG-fil och utföra klickoperation på den.

I vårt fall känner den igen filinmatningstextrutan och öppnar knappen på Windows popup med de lagrade bilderna. Om skärmupplösningen ändras från bildtagning till exekvering av testskript, skulle Sikulis beteende vara inkonsekvent. Därför är det alltid tillrådligt att köra testskriptet med samma upplösning som bilderna tas. Ändring av pixelstorlek på bilder kommer att resultera i att Sikuli kastar ett FindFailed-undantag.

Steg 3) Nästa påstående inkluderar skapandet av objekt för skärm- och mönsterklasser. Skapa ett nytt skärmobjekt. Ställ in sökvägen för filen du vill ladda upp som en parameter till Pattern-objektet.

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

Steg 4) Nedanstående uttalanden innebär att du öppnar webbläsaren Chrome med webbadressen: https://demo.guru99.com/test/image_upload/index.php

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

Ovanstående URL är en demoapplikation för att demonstrera filuppladdningsfunktionalitet.

Steg 5) Klicka på knappen Välj fil med hjälp av uttalandet nedan

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

Steg 6) Vänta tills Windows-popupen visas. Väntemetoden används för att hantera fördröjningen i samband med att fönster öppnas efter att du klickat på bläddringsknappen.

s.wait(fileInputTextBox, 20);

Steg 7) Skriv sökvägen till inmatningsfilens textruta och klicka på knappen Öppna

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

Steg 8) Stäng webbläsaren

driver.close();

Produktion:

Till en början öppnar skriptet Chrome-webbläsaren

Kodexempel för filuppladdning med Sikuli

Klicka på knappen "Välj fil", popup-skärmen för Windows-filer visas. Matar in data i filinmatningstextrutan och klickar på knappen "Öppna".

Kodexempel för filuppladdning med Sikuli

Skärmen nedan visas när filuppladdningen är klar och webbläsaren stängs

Kodexempel för filuppladdning med Sikuli

Slutsats

Sikuli används för att enkelt hantera flash-objekt på en webbsida och popup-fönster i Windows. Sikuli används bäst när elementen i användargränssnittet inte ändras ofta. På grund av denna nackdel, ur ett automationstestningsperspektiv, ges Sikuli mindre företräde jämfört med andra ramverk som Robot och AutoIT.

Sammanfatta detta inlägg med: