Qu'est-ce que Gecko Driver?
Le terme Gecko désigne un moteur de navigateur Web intégré au navigateur Mozilla Firefox. Le pilote Gecko agit comme un proxy entre les clients activés pour le pilote Web (Eclipse, Netbeans, etc.) et le navigateur Mozilla Firefox. En bref, le pilote Gecko agit comme un lien entre les tests du pilote Web Selenium et le navigateur Mozilla Firefox.
Avant Selenium 3, le navigateur Mozilla Firefox était le navigateur par défaut pour Selenium. Après Selenium 3, les testeurs doivent initialiser le script pour utiliser Firefox en utilisant explicitement GeckoDriver. Selenium utilise le protocole W3C Webdriver pour envoyer des requêtes à GeckoDriver, qui les traduit en un protocole nommé Marionette. Firefox comprendra les commandes transmises sous forme de protocole Marionette et les exécutera.
Avantage d'utiliser Gecko Driver
Selenium Webdriver version 2.53 n'est pas compatible avec Mozilla Firefox version 47.0+. Le pilote Firefox utilisé dans les versions antérieures de Mozilla Firefox sera abandonné et seule l'implémentation GeckoDriver sera utilisée. Par conséquent, les testeurs sont obligés d'utiliser GeckoDriver s'ils souhaitent exécuter des tests automatisés sur Mozilla Firefox version 47.0+. Mais la grande question - quel est l'avantage?
Le principal avantage de l'utilisation de GeckoDriver par rapport au pilote Firefox par défaut est la compatibilité . GeckoDriver utilise le protocole W3C WebDriver pour communiquer avec Selenium. W3C est une norme universellement définie pour le pilote Web. Cela signifie que les développeurs Selenium (personnes qui codent Selenium base) n'ont pas besoin de créer une nouvelle version du pilote Web pour chaque version du navigateur. Le même pilote Web peut être utilisé pour plusieurs versions de navigateur. Par conséquent, GeckoDriver est préféré par rapport à l'implémentation antérieure du pilote Firefox.
Téléchargez et installez le pilote Gecko:
Gecko Driver est disponible sous forme de fichier exécutable qui peut être téléchargé sur le système. Voici la liste des étapes pour télécharger le pilote gecko.
Étape 1) Sur cette page https://github.com/mozilla/geckodriver/releases, sélectionnez la version appropriée pour le téléchargement de GeckoDriver en fonction de votre système d'exploitation
Étape 2) Une fois le téléchargement du fichier ZIP terminé, extrayez le contenu du fichier ZIP dans un dossier de fichiers
Étape 3) Notez l'emplacement où vous avez extrait le pilote. L'emplacement sera utilisé plus tard pour instancier le pilote.
Façons d'initialiser GeckoDriver:
Il existe trois manières différentes d'initialiser GeckoDriver.
1. Utilisation de DesiredCapabilities:
Tout d'abord, définissez la propriété système du pilote Gecko.
Syntaxe:
System.setProperty ("webdriver.gecko.driver", "Chemin d'accès au fichier geckdriver.exe");
Exemple:
System.setProperty ("webdriver.gecko.driver", "D: \\ Downloads \\ GeckoDriver.exe");
Ensuite, définissez les capacités souhaitées.
Les capacités souhaitées aident Selenium à comprendre le nom du navigateur, la version et le système d'exploitation pour exécuter les tests automatisés. Vous trouverez ci-dessous le code pour définir le pilote gecko à l'aide de la classe DesiredCapabilities.
DesiredCapabilities capabilities = DesiredCapabilities.firefox ();capacités.setCapability ("marionnette", vrai);
Voici le code complet
System.setProperty ("webdriver.gecko.driver", driverPath);DesiredCapabilities capabilities = DesiredCapabilities.firefox ();capacités.setCapability ("marionnette", vrai);driver = nouveau FirefoxDriver (fonctionnalités);
2. Utilisation de la propriété de marionnette:
Le pilote Gecko peut également être initialisé en utilisant la propriété marionnette comme ci-dessous
System.setProperty ("webdriver.gecko.driver", "D: \\ Downloads \\ GeckoDriver.exe");
Si le pilote gecko est initialisé à l'aide de la méthode ci-dessus, le code des capacités souhaitées n'est pas requis.
3. Utilisation de FirefoxOptions:
Mozilla Firefox version 47+ a un pilote de marionnette comme système hérité. En profitant de cela, le pilote de marionnette peut être appelé en utilisant les options de Firefox comme ci-dessous
Options de FirefoxOptions = nouvelles options de Firefox ();options.setLegacy (vrai);
Code de lancement de Firefox à l'aide du pilote Gecko:
package com.guru99.demo;import org.junit.After;import org.junit.Before;import org.junit.Test;import org.openqa.selenium.WebDriver;import org.openqa.selenium.firefox.FirefoxDriver;import org.openqa.selenium.remote.DesiredCapabilities;classe publique GeckoDriverDemo {String driverPath = "D: \\ Guru99Demo \\ GeckoDriver.exe";pilote WebDriver public;@Avant quepublic void startBrowser () {System.setProperty ("webdriver.gecko.driver", driverPath);DesiredCapabilities capabilities = DesiredCapabilities.firefox ();capacités.setCapability ("marionnette", vrai);driver = nouveau FirefoxDriver (fonctionnalités);}@Testpublic void navigateToUrl () {driver.get ("http://demo.guru99.com/selenium/guru99home/");}@Aprèspublic void endTest () {driver.quit ();}}
Explication du code:
@Before méthode:
Au départ, nous devons définir la propriété système du pilote gecko sur l'emplacement de téléchargement du fichier geckdriver.exe. Nous devons définir la propriété marionnette sur true pour que Selenium utilise le protocole Marionette pour communiquer avec Gecko Driver. Enfin, nous devons démarrer l'instance du navigateur Firefox en utilisant l'objet pour les capacités souhaitées.
Les instructions ci-dessous aident à accomplir la tâche ci-dessus.
System.setProperty ("webdriver.gecko.driver", driverPath);DesiredCapabilities capabilities = DesiredCapabilities.firefox ();capacités.setCapability ("marionnette", vrai);driver = nouveau FirefoxDriver (fonctionnalités);
@Méthode d'essai:
Nous naviguons vers l'URL spécifiée par l'utilisateur en utilisant la méthode intégrée "get" fournie par le pilote Web Selenium. La déclaration ci-dessous aide à atteindre la même chose.
driver.get ("http://demo.guru99.com/selenium/guru99home/");
@After méthode:
Enfin, nous fermons l'instance du navigateur à l'aide de la méthode quit.
driver.quit ();
Modifiez un script pour non-Gecko en Gecko:
Le script de pilote non gecko utilisé avant Selenium 3 était simple. Nous devons créer une instance du pilote Firefox et utiliser la variable d'instance.
@Avant quepublic void startBrowser () {pilote = nouveau FirefoxDriver ();}
Pour convertir en gecko, vous devez simplement ajouter une ligne de code
@Avant quepublic void startBrowser () {System.setProperty ("webdriver.gecko.driver", "D: \\ Downloads \\ GeckoDriver.exe");pilote = nouveau FirefoxDriver ();}
Des exceptions courantes se sont produites lors de l'utilisation du pilote Gecko:
Voici une liste des exceptions courantes qui se produisent lors de l'utilisation du pilote Gecko et avec la résolution.
1. Le chemin d'accès à l'exécutable du pilote doit être défini par la propriété système webdriver.gecko.driver:
Cette exception se produit lorsque l'utilisateur tente d'instancier le pilote Firefox sans définir la propriété système du pilote gecko. Cela est généralement fait par les débutants de Selenium qui ne sont pas au courant des modifications apportées à Selenium 3 aux versions précédentes de Selenium.
La résolution de l'exception ci-dessus consiste à définir la propriété système du pilote gecko avec l'emplacement du fichier geckodriver.exe comme ci-dessous
System.setProperty ("webdriver.gecko.driver", "D: \\ Downloads \\ geckodriver.exe");
Veuillez noter que vous devez définir la propriété du pilote gecko avant de créer une instance du pilote Mozilla Firefox.
2. Exception de Firefox non connecté:
org.openqa.selenium.firefox.NotConnectedException: impossible de se connecter à l'hôte 127.0.0.1 sur le port 7055 après 45000 ms.
Cette exception se produit généralement lorsque la version de Firefox a été mise à niveau vers la dernière version. La résolution de cette exception est de mettre à jour le fichier jar sélénium et le pilote gecko vers la dernière version et de les utiliser.
3. Exception de session non créée:
org.openqa.selenium.SessionNotCreatedException: impossible de créer une nouvelle session à distance.
Cette exception se produit en raison de problèmes de compatibilité entre les pilotes Selenium et Gecko. Le pilote Gecko fonctionne avec Firefox version 47 ou supérieure. Il peut être résolu en mettant à jour la version de Firefox à 47 ou au-dessus.
4. Exception de connexion refusée:
Exception WebDriver: connexion refusée
Cette exception est le message généré lorsque le pilote Web ne parvient pas à établir une connexion avec Firefox. Il peut être résolu à l'aide de l'une des techniques suivantes.
- Utilisez la méthode driver.quit () pour détruire les instances antérieures du pilote Web
- Nettoyez le cache du navigateur avant d'exécuter vos tests automatisés
- Nettoyer l'espace de travail du projet dans l'IDE Eclipse
- Utilisez toujours la dernière version du pilote sélénium gecko et la version la plus récente du navigateur Firefox