Sikuli-tutorial voor Selenium Automatisering

Waar zit Sikuli in? Selenium?

Sikuli is een open-source GUI-gebaseerde testautomatiseringstool. Het wordt voornamelijk gebruikt voor interactie met elementen van webpagina's en het verwerken van op vensters gebaseerde pop-ups. Sikuli gebruikt de techniek van "Image Recognition" en "Control GUI" om te communiceren met elementen van webpagina's en pop-ups van vensters. In Sikuli worden alle webelementen als afbeeldingen genomen en opgeslagen in het project.

Hoe Sikuli te gebruiken Selenium Webstuurprogramma

Sikuli kan worden geïntegreerd met Selenium Webdriver met behulp van het Sikuli JAR-bestand.

Hieronder vindt u een lijst met stappen voor het configureren van Sikuli met Selenium WebDriver.

Stap 1) Downloaden het Sikuli JAR-bestand van de onderstaande URL en extraheer de inhoud van het ZIP-bestand naar een map.

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

Gebruik Sikuli With Selenium Webstuurprogramma

Stap 2) Maak een nieuw JAVA-project in Eclipse en voeg het JAR-bestand toe aan het buildpad, samen met de Selenium-JAR-bestanden met behulp van de rechtermuisknop op het project -> Buildpad -> Buildpad configureren

gebruik Sikuli With Selenium Webstuurprogramma

Zodra u het JAR-bestand aan het bouwpad van het project hebt toegevoegd, kunnen de door Sikuli geleverde klassen worden gebruikt.

Schermles in Sikuli

De Screen-klasse is de basisklasse voor alle methoden die door Sikuli worden geleverd. De Screen-klasse bevat vooraf gedefinieerde methoden voor alle veelgebruikte bewerkingen op schermelementen, zoals klikken, dubbelklikken, invoer leveren aan een tekstvak, zweven, enz. Hieronder staat de lijst met veelgebruikte methoden die door de Screen-klasse worden geleverd.

Methode Beschrijving Syntaxis
Klik Deze methode wordt gebruikt om op een element op het scherm te klikken met de afbeeldingsnaam als parameter. Scherm s = nieuw scherm();

s.klik(“QA.png”);

dubbelklik Deze methode wordt gebruikt om te dubbelklikken op een element. Het accepteert de afbeeldingsnaam als parameter. Scherm s = nieuw scherm();

s.doubleClick(“QA.png”);

Type Deze methode wordt gebruikt om invoerwaarde aan een element te geven. Het accepteert de afbeeldingsnaam en tekst die als parameters moeten worden verzonden.

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

Zweven Deze methode wordt gebruikt om over een element te bewegen. Het accepteert de afbeeldingsnaam als parameter.

s.hover(“QA.png”);

Find Deze methode wordt gebruikt om een ​​specifiek element op het scherm te vinden. Het accepteert de afbeeldingsnaam als parameter.

s.find(“QA.png”);

Patroonles in Sikuli

De patroonklasse wordt gebruikt om het afbeeldingsbestand te koppelen aan aanvullende attributen om het element uniek te identificeren. Het neemt het pad van de afbeelding als parameter.

Patroon p = nieuw patroon(“Pad van afbeelding”);

Hieronder staan ​​de meestgebruikte methoden van de klasse Pattern.

Methode Beschrijving Syntaxis
getBestandsnaam Retourneert de bestandsnaam in het Pattern-object.

Patroon p = nieuw patroon(“D:\Demo\QA.png”);

String bestandsnaam = p.getFileName();

gelijk Deze methode retourneert een nieuw Pattern-object waarvan de gelijkenis is ingesteld op een opgegeven waarde. Het accepteert de gelijkeniswaarde tussen 0 en 1 als parameter. Sikuli zoekt naar alle elementen die binnen het opgegeven overeenkomstbereik vallen en retourneert een nieuw patroonobject.

Patroon p1 = p.similar(0.7f);

Exact Deze methode retourneert een nieuw patroonobject waarvan de overeenkomst is ingesteld op 1. Er wordt alleen gezocht naar een exacte overeenkomst met het opgegeven element.

Patroon p1 = p.exact();

Codevoorbeeld voor het uploaden van bestanden met Sikuli

Onderstaande code legt het gebruik van Sikuli uit voor het uploaden van bestanden 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();
    }
}

Code Verklaring:

Stap 1) De eerste verklaring betreft het instellen van het uitvoerbare pad van het stuurprogramma voor Chrome.

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

Stap 2) Gebruik een screengrab-tool zoals Snipping Tool om screenshots te maken van Windows-pop-up 'FileTextBox' en 'Open'-knop.

Codevoorbeeld voor het uploaden van bestanden met Sikuli

Zo zou je screenshot eruit moeten zien: -

Codevoorbeeld voor het uploaden van bestanden met Sikuli

Afbeeldingen voor het invoertekstvak en de openknop van het Windows-bestand worden opgeslagen in 'FileText'Box.PNG' en 'OpenButton.PNG'.

Sikuli gebruikt de techniek van Beeldherkenning om elementen op het scherm te herkennen. Het vindt elementen op het scherm uitsluitend op basis van hun afbeeldingen.

Voorbeeld: Als u het openen van Kladblok wilt automatiseren, moet u de afbeelding van een bureaubladpictogram voor Kladblok opslaan in een PNG-bestand en er een klikbewerking op uitvoeren.

In ons geval herkent het het invoertekstvak van het bestand en opent de knop op Windows popup met de opgeslagen afbeeldingen. Als de schermresolutie verandert van het vastleggen van afbeeldingen naar het uitvoeren van een testscript, zou het gedrag van Sikuli inconsistent zijn. Daarom is het altijd raadzaam om het testscript uit te voeren op dezelfde resolutie als waarop de afbeeldingen zijn vastgelegd. Verandering in de pixelgrootte van afbeeldingen zal ertoe leiden dat Sikuli een FindFailed-uitzondering gooit.

Stap 3) De volgende instructies omvatten het maken van objecten voor de klassen Screen en Pattern. Maak een nieuw schermobject. Stel het pad van het bestand dat u wilt uploaden in als parameter voor het Pattern-object.

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

Stap 4) De onderstaande verklaringen hebben betrekking op het openen van de Chrome-browser met de URL: https://demo.guru99.com/test/image_upload/index.php

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

De bovenstaande URL is een demo-applicatie om de functionaliteit voor het uploaden van bestanden te demonstreren.

Stap 5) Klik op de knop Bestand kiezen met behulp van onderstaande verklaring

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

Stap 6) Wacht tot de Windows-pop-up verschijnt. De wachtmethode wordt gebruikt om de vertraging te verwerken die gepaard gaat met het openen van Windows-pop-ups na het klikken op de bladerknop.

s.wait(fileInputTextBox, 20);

Stap 7) Typ het bestandspad in het invoertekstvak en klik op de knop Openen

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

Stap 8) Sluit de browser

driver.close();

Output:

In eerste instantie opent het script de Chrome-browser

Codevoorbeeld voor het uploaden van bestanden met Sikuli

Klikt op de knop 'Kies bestand', het pop-upscherm van Windows-bestanden verschijnt. Voert gegevens in het tekstvak Bestandsinvoer in en klikt op de knop 'Openen'

Codevoorbeeld voor het uploaden van bestanden met Sikuli

Het onderstaande scherm wordt weergegeven zodra het uploaden van het bestand is voltooid en de browser wordt gesloten

Codevoorbeeld voor het uploaden van bestanden met Sikuli

Conclusie

Sikuli wordt gebruikt om flash-objecten op een webpagina en Windows-pop-ups eenvoudig te verwerken. Sikuli wordt het beste gebruikt wanneer de elementen op de gebruikersinterface niet vaak veranderen. Vanwege dit nadeel krijgt Sikuli vanuit een automatiseringstestperspectief minder voorkeur vergeleken met andere frameworks zoals Robot en AutoIT.