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.
https://mvnrepository.com/artifact/com.sikulix/sikulixapi/2.0.5
É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 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.