geckodriver selenium tutorial
Tutoriel GeckoDriver Selenium: Apprenez à utiliser le pilote Gecko (Marionette) dans Selenium
Afin de comprendre ce qu'est GeckoDriver, nous devons d'abord connaître Gecko et le moteur de navigateur Web. Ce tutoriel couvre presque toutes les fonctionnalités impliquées dans GeckoDriver, vous en donnant ainsi un aperçu complet.
Alors pour commencer, dites-nous d'abord ce qu'est Gecko et qu'est-ce qu'un moteur de navigateur Web?
Ce que vous apprendrez:
- Qu'est-ce que Gecko?
- Qu'est-ce qu'un moteur de navigateur Web?
- Qu'est-ce que GeckoDriver?
- Pourquoi Selenium a-t-il besoin de GeckoDriver?
- Comment utiliser GeckoDriver dans Selenium Project?
- GeckoDriver et TestNG
- Étapes pour ajouter un chemin dans la variable d'environnement PATH du système
- Problèmes sans pilote Gecko
- Informations supplémentaires sur GeckoDriver
- Conclusion
- lecture recommandée
Qu'est-ce que Gecko?
Gecko est un moteur de navigateur Web. Il existe plusieurs applications qui nécessitent Gecko. Plus précisément, les applications développées par Mozilla Foundation et Mozilla Corporation. Gecko est également un besoin pour de nombreux projets de logiciels open source. Gecko est écrit en C ++ et JavaScript.
Les dernières versions sont également écrites en Rust. Gecko est un moteur de navigateur Web gratuit et open source.
Qu'est-ce qu'un moteur de navigateur Web?
Le moteur de navigateur Web n'est rien d'autre qu'un logiciel. La fonction principale de ce programme est de collecter le contenu (comme HTML, XML, images) et de formater les informations (comme CSS) et d'afficher ce contenu formaté à l'écran. Le moteur de navigateur Web est également appelé moteur de mise en page ou moteur de rendu.
Les applications telles que les navigateurs Web, les clients de messagerie, les lecteurs de livres électroniques, les systèmes d'aide en ligne, etc. doivent afficher du contenu Web. Et pour afficher le contenu Web, le moteur de navigateur Web est nécessaire et il fait partie de toutes ces applications. Il existe différents moteurs de navigateur Web pour chaque navigateur Web.
Le tableau suivant présente les navigateurs Web et les moteurs de navigateur Web qu'ils utilisent.
Gecko fonctionne sur le système d'exploitation suivant sans émulation:
- les fenêtres
- Mac OS
- Linux
- BSD
- Unix
Il ne peut pas fonctionner sur un système d'exploitation Symbian.
Qu'est-ce que GeckoDriver?
GeckoDriver est un lien de connexion vers le navigateur Firefox pour votre scripts dans Selenium . GeckoDriver est un proxy qui aide à communiquer avec les navigateurs basés sur Gecko (par exemple Firefox), pour lesquels il fournit une API HTTP.
Pourquoi Selenium a-t-il besoin de GeckoDriver?
Firefox (version 47 et plus) y a apporté quelques modifications et pour certaines raisons de sécurité, il ne permet à aucun pilote tiers d'interagir directement avec les navigateurs. Par conséquent, nous ne pouvons pas utiliser Selenium2 avec les dernières versions de Firefox. Nous avons donc besoin de Selenium3.
Selenium3 a Marionette Driver. Selenium3 peut interagir directement avec le navigateur Firefox à l'aide d'un proxy, qui n'est autre que le GeckoDriver.
Comment utiliser GeckoDriver dans Selenium Project?
- Considérons que vous disposez de la dernière version de Selenium WebDriver et le navigateur Firefox.
- Ensuite, téléchargez le GeckoDriver depuis ici . Plus tard, choisissez la version qui convient à votre ordinateur.
- Extraire les fichiers à partir du dossier compressé
- Ajoutez les références des bibliothèques Selenium3 dans votre projet via- Faites un clic droit sur le projet => Build Path => Configure Build Path => Libraries => Add External Jars.
- Sélectionner Dossier Lib => Cliquez Clt + A => Cliquez sur Ouvrir .
- Après Vous cliquez sur ouvrir , vous verrez la fenêtre suivante:
- Cliquez ensuite sur OK.
- Maintenant, écrivons notre code et utilisons la propriété système pour spécifier le chemin GeckoDriver.
- Ajoutez la ligne ci-dessous dans votre code:
System.setProperty(“webdriver.gecko.driver”,”Path of the GeckoDriver file”).
** ( Comment copier l'adresse du fichier extrait. - (Appuyez sur 'Shift' à partir du clavier et cliquez avec le bouton droit sur le fichier, vous obtiendrez une option. Puis 'Copier l'adresse du fichier'.))
** ( Dans ce chemin copier-coller, assurez-vous qu'il existe une double barre oblique inverse, sinon le code aura une erreur de syntaxe.)
prenons un exemple
Exemple
Voici juste un simple script, dans lequel nous ouvrons la page Web de Google dans un navigateur Firefox et vérifions le titre de la page Web.
Code1:
import org.openqa.selenium.WebDriver; import org.openqa.selenium.firefox.FirefoxDriver; publicclass First_Class { publicstaticvoid main(String() args) { System.setProperty('webdriver.gecko.driver','E:\GekoDriver\geckodriver-v0.15.0-win64\geckodriver.exe'); WebDriver driver=new FirefoxDriver(); driver.get('https://www.google.com/'); driver.manage().window().maximize(); String appTitle=driver.getTitle(); String expTitle='Google'; if (appTitle.equals (expTitle)){ System.out.println('Verification Successfull'); } else{ System.out.println('Verification Failed'); } driver.close(); System.exit(0); } }
Comprendre le code
# 1) importer org.openqa.selenium.WebDriver- Ici, nous importons toutes les références à l'interface WebDriver. Plus tard, cette interface WebDriver est requise pour instancier un nouveau navigateur.
# 2) Importez org.openqa.selenium.firefox.FirefoxDriver- Ici, nous importons toutes les références à la classe FirefoxDriver.
# 3) setProperty (clé de chaîne, valeur de chaîne) - Ici, nous définissons la propriété système en fournissant le nom de la propriété qui est appelée comme clé et son chemin qui est appelé comme valeur.
Clé -Nom de la propriété système, c'est-à-dire webdriver.gecko.driver .
Évaluer - Adresse du fichier exe de Gecko Driver.
# 4) Pilote WebDriver = nouveau FirefoxDriver () - Dans cette ligne de code, nous créons la variable de référence «driver» du WebDriver et cette variable de référence est initiée à l'aide de la classe FirefoxDriver. Un profil Firefox sans extensions ni plugins sera lancé avec l'instance Firefox.
# 5) get ('URL') - En utilisant cette méthode Get, nous pouvons ouvrir l'URL spécifiée dans le navigateur. Cette méthode Get est appelée en utilisant la variable de référence de WebDriver, c'est-à-dire le pilote. La chaîne est transmise à la méthode Get, ce qui signifie que l'URL de notre application est transmise à cette méthode Get.
# 6) gérer (). Window (). Maximiser () - En utilisant cette ligne de code, nous maximisons la fenêtre du navigateur. Dès que le navigateur ouvre l'URL spécifiée, celle-ci est agrandie à l'aide de cette ligne.
# 7) getTitle () - En utilisant cette ligne de code, nous pourrons trouver le titre de la page Web. Cette méthode est également appelée à l’aide de la variable de référence «pilote» du WebDriver. Nous enregistrons ce titre dans la variable String 'appTitle'.
# 8) Comparaison– Ici, nous comparons l'appTitle (qui passera par driver.getTitle () méthode) et la expTitle (qui est «Google») en utilisant l'instruction If. C'est juste une simple instruction If-else. Lorsque la condition «Si» est satisfaite, nous imprimons le message «Vérification réussie», sinon nous imprimons le message «Échec de la vérification».
if (appTitle.equals (expTitle)) { System.out.println ('Verification Successful'); } else { System.out.println('Verification Failed'); }
# 9) driver.close () - Cette ligne de code ferme le navigateur. Cette ligne ferme uniquement la fenêtre courante.
# dix) System.exit (0) - Cette méthode de ligne de code est utilisée pour arrêter l'exécution de la machine virtuelle Java. Il est donc recommandé de fermer toutes les fenêtres ou fichiers ouverts avant cette ligne.
GeckoDriver et TestNG
Il n'y a pas beaucoup de différence dans le code, mais ici j'ajoute un code juste pour votre référence.
EXEMPLE:
Passons à l'exemple. Notre exemple consiste à ouvrir la page Web Google.com, à obtenir son titre et à l'imprimer.
Code2:
import org.testng.annotations.Test; import org.openqa.selenium.WebDriver; import org.openqa.selenium.firefox.FirefoxDriver; publicclass TstNG { @Test publicvoid f() { System.setProperty('webdriver.gecko.driver','E:\GekoDriver\geckodriver-v0.15.0-win64\geckodriver.exe'); WebDriver driver=new FirefoxDriver(); driver.get('https://www.google.com/'); driver.manage().window().maximize(); String appurl=driver.getTitle(); System.out.println(appurl); driver.close(); // System.exit(0); } }
Points à retenir lors de l'écriture du code TestNG:
#1) Utilisez la méthode System.setProperty (String key, String value) dans la fonction f () comme dans l'exemple précédent. Dans cet exemple, nous l'avons écrit dans la fonction principale. Cependant, dans TestNG, il n'y a pas de fonctions main (). Si vous l'écrivez en dehors de la fonction, vous obtiendrez une erreur de syntaxe.
#deux) La deuxième chose la plus importante à retenir est System.exit (0). Il n'est pas nécessaire d'ajouter cette ligne de code dans votre script TestNG. Il y a une raison à cela qui est - après l'exécution du script TestNG, le dossier de sortie est généré où vous pouvez afficher les rapports générés et le résultat, si vous ajoutez System.exit (0) dans votre script, ce dossier (dossier de sortie) ne sera généré et vous ne pourrez pas afficher les rapports.
Étapes pour ajouter un chemin dans la variable d'environnement PATH du système
- Sur le système Windows, cliquez avec le bouton droit sur Poste de travail ou Ce PC.
- Sélectionnez Propriétés.
- Sélectionnez les paramètres système avancés.
- Cliquez sur le bouton Variables d'environnement.
- Dans Variables système, sélectionnez PATH.
- Cliquez sur le bouton Modifier.
- Cliquez sur le bouton Nouveau
- Collez le chemin du fichier GeckoDriver.
- Cliquez sur OK.
Problèmes sans pilote Gecko
Vous pourriez rencontrer des problèmes comme ceux indiqués ci-dessous.
#1) Si vous utilisez une ancienne version de Firefox et Selenium3, vous obtiendrez l'exception suivante:
initialisation des variables statiques c ++
Exception dans le thread «main» java.lang.IllegalStateException
#deux) Si vous utilisez la dernière version de Firefox et une ancienne version de Selenium, vous obtiendrez l'exception suivante:
org.openqa.selenium.firefox.NotConnectedException : Impossible de se connecter à l'hôte 127.0.0.1 sur le port 7055 après 45000 ms
# 3) Si vous utilisez la dernière version de Firefox et WebDriver, mais n'utilisez pas GeckoDriver, vous obtiendrez l'exception suivante:
Exception dans le thread «main» java.lang.IllegalStateException: le chemin d'accès à l'exécutable du pilote doit être défini par la propriété système webdriver.gecko.driver; pour plus d'informations, voir ici .La dernière version peut être téléchargée sur ici .
Informations supplémentaires sur GeckoDriver
Comme nous le savons, GeckoDriver est un proxy qui aide à communiquer avec les navigateurs basés sur Gecko (par exemple Firefox), pour lesquels il fournit une API HTTP.
Cette API HTTP peut être comprise à l'aide du protocole WebDriver. Certains nœuds du protocole WebDriver incluent l'extrémité locale, l'extrémité distante, le nœud intermédiaire et le nœud de point de terminaison. La communication entre ces nœuds est décrite dans le protocole WebDriver.
L'extrémité locale est le côté client du protocole WebDriver. L'extrémité distante signifie le côté serveur du protocole WebDriver. Le nœud intermédiaire joue le rôle de proxy. Le nœud de point final est mis en œuvre par un agent utilisateur ou un programme similaire.
Les commandes et réponses envoyées par le WebDriver à GeckoDriver sont traduites en Marionette Protocol puis transférées vers Marionette Driver par GeckoDriver. Nous concluons donc en disant que GeckoDriver agit comme un proxy entre ces deux WebDriver et Marionette.
Marionette est divisée en 2 parties, qui est la partie serveur et la partie client. Les commandes envoyées par la partie client sont exécutées par la partie serveur.
Ce travail d'exécution de commande est effectué à l'intérieur du navigateur. Marionette n'est rien d'autre qu'une combinaison d'un composant gecko (qui est un serveur Marionette) et d'un composant externe (qui s'appelle Marionette Client). GeckoDriver est écrit en langage de programmation Rust.
Conclusion
GeckoDriver est un facteur intermédiaire entre vos scripts Selenium et les navigateurs basés sur Gecko comme Firefox.
GeckoDriver est un proxy pour communiquer avec les navigateurs basés sur Gecko ( Par exemple. Firefox). Firefox (version 47 et supérieure) a apporté quelques modifications, ce qui a empêché la prise en charge des pilotes tiers d'interagir directement avec les navigateurs.
C'est la raison principale pour laquelle nous devons utiliser le GeckoDriver. La façon la plus simple d'utiliser GeckoDriver dans votre script est d'implémenter l'utilisation de Propriété System.set. (System.setProperty ('webdriver.gecko.driver', 'Chemin du fichier du pilote Gecko')).
Êtes-vous nouveau sur GeckoDriver? Avez-vous appris quelque chose de nouveau aujourd'hui dans ce GeckoDriver Selenium? Ou avez-vous quelque chose d'intéressant à partager avec nous à propos de GeckoDriver? N'hésitez pas à exprimer vos pensées dans la section commentaires ci-dessous.
lecture recommandée
- Tutoriel Cucumber Selenium: Intégration Cucumber Java Selenium WebDriver
- Introduction à Selenium WebDriver - Tutoriel Selenium # 8
- Tutoriel de recherche d'élément par texte de sélénium avec des exemples
- Implémentation de notre premier script WebDriver - Tutoriel Selenium WebDriver # 10
- Comment gérer les alertes / fenêtres contextuelles dans Selenium WebDriver - Tutoriel Selenium # 16
- Configuration et installation complètes de WebDriver avec Eclipse - Tutoriel Selenium # 9
- Tutoriels Eclipse détaillés pour les débutants
- Script Selenium efficace et scénarios de dépannage - Tutoriel Selenium # 27