Tutorial Sikuli per Selenium Automazione

In cosa consiste Sikuli Selenium?

Siculi è uno strumento di automazione dei test basato su GUI open source. È utilizzato principalmente per interagire con elementi di pagine web e gestire popup basati su finestre. Sikuli utilizza la tecnica di "Image Recognition" e "Control GUI" per interagire con elementi di pagine web e popup di finestre. In Sikuli, tutti gli elementi web sono presi come immagini e archiviati all'interno del progetto.

Come usare Sikuli con Selenium Webdriver

Sikuli può essere integrato con il webdriver selenium utilizzando il file JAR Sikuli.

La sequenza seguente è l'elenco dei passaggi per configurare Sikuli con il webdriver selenium.

Passaggio 1) Scarica il file JAR Sikuli dall'URL seguente ed estrai il contenuto del file ZIP in una cartella.

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

Usa Sikuli con Selenium Webdriver

Passo 2) Crea un nuovo progetto Java in Eclipse e aggiungi il file JAR al percorso di creazione, insieme ai file jar del selenio utilizzando il clic destro sul progetto -> Percorso di creazione -> Configura percorso di creazione

usa Sikuli con Selenium Webdriver

Dopo aver aggiunto il file JAR al percorso di creazione del progetto, è possibile utilizzare le classi fornite da Sikuli.

Lezione di schermo a Sikuli

La classe Screen è la classe base per tutti i metodi forniti da Sikuli. La classe Screen contiene metodi predefiniti per tutte le operazioni comunemente eseguite sugli elementi dello schermo, come clic, doppio clic, fornitura di input a una casella di testo, passaggio del mouse, ecc. Di seguito è riportato l'elenco dei metodi comunemente utilizzati forniti dalla classe Screen.

Metodo Descrizione Sintassi
Clicchi Questo metodo viene utilizzato per fare clic su un elemento sullo schermo utilizzando il nome dell'immagine come parametro. Schermo s = nuovo Schermo();

s.click(“QA.png”);

doppio clic Questo metodo è usato per fare doppio clic su un elemento. Accetta il nome dell'immagine come parametro. Schermo s = nuovo Schermo();

s.doubleClick(“QA.png”);

Tipo Questo metodo viene utilizzato per fornire un valore di input a un elemento. Accetta come parametri il nome dell'immagine e il testo da inviare.

s.type(“QA.png","TESTO");

Librarsi Questo metodo viene utilizzato per passare il mouse sopra un elemento. Accetta il nome dell'immagine come parametro.

s.hover(“QA.png”);

Trovate Questo metodo viene utilizzato per trovare un elemento specifico sullo schermo. Accetta il nome dell'immagine come parametro.

s.find(“QA.png”);

Lezione di modelli a Sikuli

La classe Pattern viene utilizzata per associare il file immagine con attributi aggiuntivi per identificare in modo univoco l'elemento. Prende come parametro il percorso dell'immagine.

Pattern p = new Pattern(“Percorso dell'immagine”);

Di seguito sono riportati i metodi più comunemente utilizzati della classe Pattern.

Metodo Descrizione Sintassi
getNomeFile Restituisce il nome del file contenuto nell'oggetto Pattern.

Modello p = nuovo Modello(“D:\Demo\QA.png”);

String nomefile = p.getFileName();

simile Questo metodo restituisce un nuovo oggetto Pattern con la somiglianza impostata su un valore specificato. Accetta il valore di somiglianza compreso tra 0 e 1 come parametro. Sikuli cerca tutti gli elementi che rientrano nell'intervallo di somiglianza specificato e restituisce un nuovo oggetto modello.

Modello p1 = p.simile(0.7f);

Esatto Questo metodo restituisce un nuovo oggetto modello con somiglianza impostata su 1. Cerca solo una corrispondenza esatta dell'elemento specificato.

Modello p1 = p.esatto();

Esempio di codice per il caricamento di file utilizzando Sikuli

Il codice seguente spiega l'uso di Sikuli per il caricamento dei file in 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();
    }
}

Spiegazione del codice:

Passo 1) La prima istruzione prevede l'impostazione del percorso eseguibile del driver per Chrome.

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

Passo 2) Utilizza uno strumento di cattura dello schermo come Snipping Tool per fare screenshot del popup di Windows 'FileTextBox' e il pulsante 'Apri'.

Esempio di codice per il caricamento di file utilizzando Sikuli

Ecco come dovrebbe apparire il tuo screenshot: -

Esempio di codice per il caricamento di file utilizzando Sikuli

Le immagini per la casella di testo di input del file di Windows e il pulsante Apri vengono memorizzate su 'FileTextBox.PNG' e 'OpenButton.PNG'.

Sikuli utilizza la tecnica del riconoscimento delle immagini per riconoscere gli elementi sullo schermo. Trova gli elementi sullo schermo esclusivamente in base alle loro immagini.

Esempio: se desideri automatizzare l'operazione di apertura del Blocco note, devi memorizzare l'immagine di un'icona sul desktop per il Blocco note in un file PNG ed eseguire l'operazione di clic su di esso.

Nel nostro caso, riconosce la casella di testo di input del file e apre il pulsante su Windows popup utilizzando le immagini memorizzate. Se la risoluzione dello schermo cambia dall'acquisizione dell'immagine all'esecuzione dello script di test, il comportamento di Sikuli sarebbe incoerente. Quindi è sempre consigliabile eseguire lo script di test alla stessa risoluzione con cui vengono acquisite le immagini. La modifica delle dimensioni in pixel delle immagini comporterà il lancio di un'eccezione FindFailed da parte di Sikuli.

Passo 3) Le istruzioni successive includono la creazione di oggetti per le classi Screen e Pattern. Crea un nuovo oggetto sullo schermo. Imposta il percorso del file che desideri caricare come parametro nell'oggetto Pattern.

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

Passo 4) Le seguenti istruzioni implicano l'apertura del browser Chrome con l'URL: https://demo.guru99.com/test/image_upload/index.php

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

L'URL riportato sopra è un'applicazione demo per dimostrare la funzionalità di caricamento dei file.

Passo 5) Fare clic sul pulsante Scegli file utilizzando la dichiarazione seguente

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

Passo 6) Attendi che appaia il popup di Windows. Il metodo Wait viene utilizzato per gestire il ritardo associato all'apertura del popup di Windows dopo aver cliccato sul pulsante Browse.

s.wait(fileInputTextBox, 20);

Passo 7) Digitare il percorso del file nella casella di testo del file di input e fare clic sul pulsante Apri

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

Passo 8) Chiudi il browser

driver.close();

Produzione:

Inizialmente, lo script apre il browser Chrome

Esempio di codice per il caricamento di file utilizzando Sikuli

Clicca sul pulsante 'Scegli file', apparirà la schermata popup del file di Windows. Inserisci i dati nella casella di testo File Input e clicca sul pulsante 'Apri'

Esempio di codice per il caricamento di file utilizzando Sikuli

La schermata seguente viene visualizzata una volta completato il caricamento del file e chiude il browser

Esempio di codice per il caricamento di file utilizzando Sikuli

Conclusione

Sikuli è utilizzato per gestire oggetti flash su una pagina web e popup di Windows con facilità. Sikuli è meglio utilizzato quando gli elementi sull'interfaccia utente non cambiano frequentemente. A causa di questo svantaggio, da una prospettiva di testing di automazione, Sikuli è meno preferito rispetto ad altri framework come Robot e AutoIT.