Tutorial Sikuli per Selenium Automazione
โก Riepilogo intelligente
Sikuli automatizza un'interfaccia grafica riconoscendo screenshot memorizzati anzichรฉ localizzatori, il che consente a Selenium prova su strada Windows popup, finestre di dialogo native per i file e oggetti Flash che WebDriver da solo non รจ in grado di raggiungere.
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.
โ ๏ธ Nota sulla denominazione: Il progetto รจ mantenuto oggi come SikuliX, pubblicato su Maven Central come com.sikulix:sikulixapiI nomi delle classi riportati di seguito rimangono invariati.
Come usare Sikuli con Selenium Webdriver
Sikuli puรฒ essere integrato con Selenium WebDriver utilizza il file JAR di Sikuli, seguendo i due passaggi descritti di seguito.
Passaggio 1) Scarica il file JAR di Sikuli dal punto seguente URL, ed extracspostare il contenuto del file ZIP in una cartella.
https://mvnrepository.com/artifact/com.sikulix/sikulixapi/2.0.5
Passo 2) Crea un nuovo progetto Java in Eclipse e aggiungi il file JAR al percorso di compilazione, insieme ai file JAR di Selenium, facendo clic con il pulsante destro del mouse sul progetto -> Percorso di compilazione -> Configura percorso di compilazione, come mostrato di seguito.
Una volta aggiunto il file JAR al percorso di compilazione del progetto, รจ possibile utilizzare le classi fornite da Sikuli. In alternativa, un progetto Maven puรฒ dichiarare lo stesso artefatto come dipendenza.
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, inserimento di input in una casella di testo, passaggio del mouse, ecc. Di seguito รจ riportato l'elenco dei metodi piรน 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
Mentre Screen agisce su un semplice nome di immagine, la classe Pattern viene utilizzata per associare al file immagine attributi aggiuntivi che identificano in modo univoco l'elemento. Accetta come parametro il percorso dell'immagine.
Pattern p = new Pattern(โPath of imageโ);
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(); |
Code Esempio di caricamento di file tramite Sikuli
Il codice seguente illustra l'utilizzo di Sikuli per il caricamento di file in Chrome.
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 Spiegazione
Passo 1) La prima istruzione prevede l'impostazione del percorso eseguibile del driver per Chrome.
System.setProperty("webdriver.chrome.driver", "D:\\ chromedriver.exe");
โ ๏ธ Nota sulla versione: Selenium 4 risolve il binario del driver tramite Selenium Responsabile, quindi questa riga ora รจ facoltativa. Viene mantenuta cosรฌ come รจ stata scritta dalla fonte.
Passo 2) Utilizza uno strumento di cattura dello schermo come Snipping Tool per fare screenshot del popup di Windows 'FileTextBox' e il pulsante 'Apri', come mostrato di seguito.
Ecco come dovrebbe apparire la tua schermata:
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'.
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 il pulsante Apri 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 affermazioni riguardano l'apertura del browser Chrome con URL di un'applicazione dimostrativa per il caricamento di file: https://demo.guru99.com/test/image_upload/index.php
driver = new ChromeDriver(); driver.get("https://demo.guru99.com/test/image_upload/index.php");
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();
Uscita
Inizialmente, lo script apre il browser Chrome
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'
La schermata seguente viene visualizzata una volta completato il caricamento del file e chiude il browser
Poichรฉ la corrispondenza dipende dai pixel, รจ necessario ricatturare ogni immagine di riferimento ogni volta che l'interfaccia viene modificata. Questa fragilitร รจ il motivo per cui i team riservano Sikuli ai popup. Gestione dei file WebDriver standard non posso raggiungere.






