Tutoriel Sikuli pour Selenium Automatisation
Dans quoi se trouve Sikuli Selenium?
Sikuli est un outil d'automatisation de tests open source basรฉ sur une interface graphique. Il est principalement utilisรฉ pour interagir avec des รฉlรฉments de pages Web et gรฉrer les fenรชtres contextuelles. Sikuli utilise la technique de ยซ Reconnaissance d'image ยป et de ยซ Control GUI ยป pour interagir avec les รฉlรฉments des pages Web et les fenรชtres contextuelles. Dans Sikuli, tous les รฉlรฉments Web sont pris sous forme d'images et stockรฉs dans le projet.
Comment utiliser Sikuli avec Selenium Pilote Web
Sikuli peut รชtre intรฉgrรฉ au pilote Web Selenium ร l'aide du fichier Sikuli JAR.
La sรฉquence ci-dessous est la liste des รฉtapes pour configurer Sikuli avec le pilote Web Selenium.
รtape 1) Tรฉlรฉchargez le fichier Sikuli JAR ร partir de l'URL ci-dessous et extrayez le contenu du fichier ZIP dans un dossier.
รtape 2) Crรฉez un nouveau projet JAVA dans Eclipse et ajoutez le fichier JAR au chemin de construction, ainsi que les fichiers jar de sรฉlรฉnium en utilisant le clic droit sur le projet -> Chemin de construction -> Configurer le chemin de construction
Une fois que vous avez ajoutรฉ le fichier JAR au chemin de construction du projet, les classes fournies par Sikuli peuvent รชtre utilisรฉes.
Cours dโรฉcran ร Sikuli
La classe Screen est la classe de base pour toutes les mรฉthodes fournies par Sikuli. La classe Screen contient des mรฉthodes prรฉdรฉfinies pour toutes les opรฉrations couramment effectuรฉes sur les รฉlรฉments de l'รฉcran, telles que le clic, le double-clic, la saisie d'une zone de texte, le survol, etc. Vous trouverez ci-dessous la liste des mรฉthodes couramment utilisรฉes fournies par la classe Screen.
| Mรฉthode | Description | Syntaxe |
|---|---|---|
| Cliquez ร nouveau sur | Cette mรฉthode est utilisรฉe pour cliquer sur un รฉlรฉment ร l'รฉcran en utilisant le nom de l'image comme paramรจtre. | รcran s = nouvel รฉcran ();
s.clic("QA.png"); |
| doubleCliquez | Cette mรฉthode est utilisรฉe pour double-cliquer sur un รฉlรฉment. Il accepte le nom de l'image comme paramรจtre. | รcran s = nouvel รฉcran ();
s.doubleClick("QA.png"); |
| Type | Cette mรฉthode est utilisรฉe pour fournir une valeur dโentrรฉe ร un รฉlรฉment. Il accepte le nom de l'image et le texte ร envoyer comme paramรจtres. |
s.type("QA.png", "TEXT"); |
| Flotter | Cette mรฉthode est utilisรฉe pour survoler un รฉlรฉment. Il accepte le nom de l'image comme paramรจtre. |
s.hover("QA.png"); |
| Trouvez | Cette mรฉthode est utilisรฉe pour rechercher un รฉlรฉment spรฉcifique sur l'รฉcran. Il accepte le nom de l'image comme paramรจtre. |
s.find("QA.png"); |
Cours de patrons ร Sikuli
La classe Pattern est utilisรฉe pour associer le fichier image ร des attributs supplรฉmentaires afin d'identifier l'รฉlรฉment de maniรจre unique. Il prend le chemin de lโimage comme paramรจtre.
Pattern p = new Pattern("Chemin de l'image");
Voici les mรฉthodes les plus couramment utilisรฉes de la classe Pattern.
| Mรฉthode | Description | Syntaxe |
|---|---|---|
| getFileName | Renvoie le nom de fichier contenu dans l'objet Pattern. |
Modรจle p = nouveau modรจle("D:\Demo\QA.png"); String filename = p.getFileName(); |
| similaires | Cette mรฉthode renvoie un nouvel objet Pattern avec une similaritรฉ dรฉfinie sur une valeur spรฉcifiรฉe. Il accepte la valeur de similaritรฉ entre 0 et 1 comme paramรจtre. Sikuli recherche tous les รฉlรฉments qui se situent dans la plage de similaritรฉ spรฉcifiรฉe et renvoie un nouvel objet modรจle. |
Modรจle p1 = p.similar(0.7f); |
| Exact | Cette mรฉthode renvoie un nouvel objet modรจle avec une similaritรฉ dรฉfinie sur 1. Elle recherche uniquement une correspondance exacte de l'รฉlรฉment spรฉcifiรฉ. |
Modรจle p1 = p.exact(); |
Exemple de code pour le tรฉlรฉchargement de fichiers ร l'aide de Sikuli
Le code ci-dessous explique l'utilisation de Sikuli pour le tรฉlรฉchargement de fichiers dans 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();
}
}
Explication du code :
รtape 1) La premiรจre instruction consiste ร dรฉfinir le chemin exรฉcutable du pilote pour Chrome.
System.setProperty("webdriver.chrome.driver", "D:\\ chromedriver.exe");
รtape 2) Utilisez un outil de capture d'รฉcran tel que Snipping Tool pour prendre des captures d'รฉcran de la fenรชtre contextuelle ยซ FileText ยปBoxยป et le bouton ยซ Ouvrir ยป.
Voici ร quoi devrait ressembler votre capture d'รฉcran : -
Les images de la zone de texte de saisie de fichier Windows et du bouton Ouvrir sont stockรฉes dans ยซ FileText ยปBox.PNG' et 'OpenButton.PNG'.
Sikuli utilise la technique de reconnaissance d'image pour reconnaรฎtre les รฉlรฉments ร l'รฉcran. Il trouve des รฉlรฉments ร l'รฉcran uniquement en fonction de leurs images.
Exemple : Si vous souhaitez automatiser l'opรฉration d'ouverture du bloc-notes, vous devez alors stocker l'image d'une icรดne du bureau pour le bloc-notes dans un fichier PNG et effectuer une opรฉration de clic dessus.
Dans notre cas, il reconnaรฎt la zone de texte de saisie du fichier et ouvre le bouton sur Windows popup utilisant les images stockรฉes. Si la rรฉsolution de l'รฉcran change entre la capture d'image et l'exรฉcution du script de test, le comportement de Sikuli sera incohรฉrent. Il est donc toujours conseillรฉ d'exรฉcuter le script de test sur la mรชme rรฉsolution ร laquelle les images sont capturรฉes. Un changement dans la taille des pixels des images entraรฎnera Sikuli ร gรฉnรฉrer une exception FindFailed.
รtape 3) Les instructions suivantes incluent la crรฉation d'objets pour les classes Screen et Pattern. Crรฉez un nouvel objet d'รฉcran. Dรฉfinissez le chemin du fichier que vous souhaitez tรฉlรฉcharger en tant que paramรจtre de l'objet Pattern.
Screen s = new Screen(); Pattern fileInputTextBox = new Pattern(filepath + "FileTextBox.PNG"); Pattern openButton = new Pattern(filepath + "OpenButton.PNG");
รtape 4) Les instructions ci-dessous impliquent l'ouverture du navigateur Chrome avec 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 ci-dessus est une application de dรฉmonstration permettant de dรฉmontrer la fonctionnalitรฉ de tรฉlรฉchargement de fichiers.
รtape 5) Cliquez sur le bouton Choisir un fichier en utilisant l'instruction ci-dessous
driver.findElement(By.xpath(".//*[@id='photoimg']")).click();
รtape 6) Attendez que la fenรชtre contextuelle apparaisse. La mรฉthode d'attente est utilisรฉe pour gรฉrer le dรฉlai associรฉ ร l'ouverture des fenรชtres contextuelles aprรจs avoir cliquรฉ sur le bouton Parcourir.
s.wait(fileInputTextBox, 20);
รtape 7) Tapez le chemin du fichier dans la zone de texte du fichier d'entrรฉe et cliquez sur le bouton Ouvrir.
s.type(fileInputTextBox, inputFilePath + "Test.docx"); s.click(openButton);
รtape 8) Fermez le navigateur
driver.close();
Sortie :
Initialement, le script ouvre le navigateur Chrome
Clique sur le bouton ยซ Choisir un fichier ยป, l'รฉcran contextuel du fichier Windows apparaรฎtra. Entre les donnรฉes dans la zone de texte de saisie de fichier et clique sur le bouton ยซ Ouvrir ยป
L'รฉcran ci-dessous s'affiche une fois le tรฉlรฉchargement du fichier terminรฉ et ferme le navigateur
Conclusion
Sikuli est utilisรฉ pour gรฉrer facilement les objets Flash sur une page Web et les fenรชtres contextuelles. Sikuli est mieux utilisรฉ lorsque les รฉlรฉments de lโinterface utilisateur ne changent pas frรฉquemment. En raison de cet inconvรฉnient, du point de vue des tests d'automatisation, Sikuli bรฉnรฉficie d'une prรฉfรฉrence moindre par rapport ร d'autres frameworks tels que Robot et AutoIT.







