Sikuli-zelfstudie voor Selenium-automatisering

Wat is Sikuli in Selenium?

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

Hoe Sikuli te gebruiken met Selenium Webdriver

Sikuli kan worden geïntegreerd met de selenium-webdriver met behulp van het Sikuli JAR-bestand.

De onderstaande volgorde is de lijst met stappen om Sikuli te configureren met de 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 met Selenium Webdriver

Stap 2) Maak een nieuw JAVA-project in Eclipse en voeg het JAR-bestand toe om het pad te bouwen, samen met selenium jar-bestanden door met de rechtermuisknop op het project te klikken -> Build Path -> Build Path configureren

gebruik Sikuli met Selenium Webdriver

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

Schermles in Sikuli

Schermklasse is de basisklasse voor alle methoden die door Sikuli worden aangeboden. De schermklasse bevat vooraf gedefinieerde methoden voor alle veelgebruikte bewerkingen op schermelementen, zoals klikken, double-klik, invoer voor een tekst box, hover, enz. Hieronder vindt u de lijst met veelgebruikte methoden die door de klasse Screen worden geleverd.

Methode Omschrijving 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”);

doubleKlik Deze methode wordt gebruikt double klik op een element. Het accepteert de afbeeldingsnaam als parameter. Scherm s = nieuw scherm();

s.doubleKlik(“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”);

VIND DE PLEK DIE PERFECT VOOR JOU IS 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”);

De following zijn de meest gebruikte methoden van de Pattern-klasse.

Methode Omschrijving 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 schermafdruktool zoals Snipping Tool om schermafbeeldingen van te maken windows pop-up 'BestandTekstBox' 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 windows tekstinvoerbestand box en de open-knop worden opgeslagen in 'FileTextBox.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 de werking van 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 de invoertekst van het bestand box en opent de knop Windows pop-up met behulp van de opgeslagen afbeeldingen. Als de schermresolutie verandert van het vastleggen van afbeeldingen naar het uitvoeren van testscripts, zou het gedrag van Sikuli inconsistent zijn. Daarom is het altijd raadzaam om het testscript uit te voeren op dezelfde resolutie als waarmee beelden worden vastgelegd. Verandering in pixelgrootte van afbeeldingen zal resulteren in Sikuli throwing een FindFailed-uitzondering.

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 op de windows pop-up te verschijnen. De wachtmethode wordt gebruikt om de vertraging die gepaard gaat met het openen af ​​te handelen windows pop-up nadat u op de knop Bladeren hebt geklikt.

s.wait(fileInputTextBox, 20);

Stap 7) Typ het bestandspad in de tekst van het invoerbestand box 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

Klik op de knop 'Bestand kiezen', windows Het pop-upscherm voor bestanden verschijnt. Voert gegevens in in Bestandsinvoertekstbox 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 te verwerken windows pop-ups met gemak. Sikuli kan het beste worden gebruikt als de elementen in de gebruikersinterface niet vaak veranderen. Owing Om dit nadeel krijgt Sikuli vanuit het perspectief van automatiseringstests minder de voorkeur in vergelijking met andere raamwerken zoals Robot en AutoIT.