Selenium

Utiliser Selenium avec le pilote Firefox

Utiliser Selenium avec le pilote Firefox
Selenium est un excellent outil pour les tests de navigateur, l'automatisation Web et le grattage Web. Selenium peut contrôler la plupart des navigateurs Web modernes. je.e., Firefox, Chrome, Chrome, Opéra, Apple Safari. Pour contrôler un navigateur, Selenium a besoin d'un outil appelé pilote Web. La plupart des fournisseurs de navigateurs modernes fournissent le logiciel pilote Web pour leurs navigateurs Web.

Pour contrôler le navigateur Web Mozilla Firefox depuis Selenium, vous devez utiliser le pilote Web Gecko.

Dans cet article, je vais vous montrer comment configurer Selenium pour exécuter des tests de navigateur, l'automatisation Web, les tâches de grattage Web à l'aide du navigateur Web Mozilla Firefox. Alors, commençons.

Conditions préalables:

Pour essayer les commandes et exemples de cet article, vous devez avoir,

1) Une distribution Linux (de préférence Ubuntu) installée sur votre ordinateur.
2) Python 3 installé sur votre ordinateur.
3) PIP 3 installé sur votre ordinateur.
4) Mozilla Firefox installé sur votre ordinateur.

Vous pouvez trouver de nombreux articles sur ces sujets sur LinuxHint.com. N'oubliez pas de les consulter si vous avez besoin d'aide.

Préparation de l'environnement virtuel Python 3 pour le projet :

Python Virtual Environment est utilisé pour créer un répertoire de projet Python isolé. Les modules Python que vous installez à l'aide de PIP seront installés dans le répertoire du projet uniquement, pas globalement.

Python virtualenv module est utilisé pour gérer les environnements virtuels Python.

Vous pouvez installer Python virtualenv module globalement en utilisant PIP 3 comme suit :

$ sudo pip3 installer virtualenv

Python virtualenv devrait être installé.

Créer un répertoire de projet sélénium-firefox/ dans votre répertoire de travail actuel comme suit :

$ mkdir -pv sélénium-firefox/drivers

Accédez à votre répertoire de projet nouvellement créé sélénium-firefox/ comme suit:

$ cd sélénium-firefox/

Créez un environnement virtuel Python dans votre répertoire de projet avec la commande suivante :

$ virtualenv .venv

L'environnement virtuel Python doit être créé dans votre répertoire de projet.

Activez l'environnement virtuel Python depuis votre répertoire de projet avec la commande suivante :

$ source .env/bin/activer

Installation de la bibliothèque Python Selenium :

La bibliothèque Selenium est disponible dans le référentiel officiel Python PyPI.

Vous pouvez installer la bibliothèque Selenium Python à l'aide de PIP 3 comme suit :

$ pip3 installer le sélénium

La bibliothèque Selenium Python doit être installée.

Installation du pilote Firefox Gecko :

Pour télécharger le pilote Firefox Gecko, visitez la page des versions GitHub de mozilla/geckodriver à partir de votre navigateur Web préféré.

Comme vous pouvez le voir, v0.26.0 est la dernière version du pilote Firefox Gecko au moment de la rédaction de cet article.

Pour télécharger le pilote Firefox Gecko, faites défiler un peu vers le bas et cliquez sur le tar Linux geckodriver.archive gz en fonction de l'architecture de votre système d'exploitation.

Si vous utilisez un système d'exploitation 32 bits, cliquez sur le geckodriver-v0.26.0-linux32.le goudron.gz relier.

Si vous utilisez un système d'exploitation 64 bits, cliquez sur le geckodriver-v0.26.0-linuxx64.le goudron.gz relier.

Je vais télécharger la version 64 bits du pilote Firefox Gecko.

Votre navigateur devrait vous inviter à enregistrer l'archive. Sélectionner Enregistrer le fichier et cliquez sur d'accord.

Le pilote Firefox Gecko doit être téléchargé.

L'archive du pilote Firefox Gecko doit être téléchargée dans le ~/Téléchargements annuaire.

Vous pouvez extraire le geckodriver-v0.26.0-linux64.le goudron.gz archives de la ~/Téléchargements répertoire vers le Conducteurs/ répertoire de votre projet avec la commande suivante :

$ tar -xzf ~/Téléchargements/geckodriver-v0.26.0-linux64.le goudron.gz -C pilotes/

Une fois l'archive du pilote Firefox Gecko extraite, un nouveau fichier binaire pilote de gecko devrait être créé dans le Conducteurs/ répertoire de votre projet, comme vous pouvez le voir dans la capture d'écran ci-dessous.

Premiers pas avec Selenium à l'aide du pilote Firefox Gecko :

Dans cette section, je vais vous montrer comment configurer votre tout premier script Python Selenium pour tester si le pilote Firefox Gecko fonctionne.

Tout d'abord, créez un nouveau script Python ex00.py dans votre répertoire de projet et tapez les lignes suivantes dedans.

à partir du pilote Web d'importation de sélénium
du sélénium.pilote Web.commun.clés importer des clés
navigateur = pilote Web.Firefox(executable_path="./drivers/geckodriver")
le navigateur.obtenir('https://www.astuce linux.com')
print('Titre : %s' % navigateur.Titre)
le navigateur.quitter()

Une fois que vous avez terminé, enregistrez ex00.py Script Python.

Les lignes 1 et 2 importent tous les composants requis du sélénium bibliothèque Python.

La ligne 4 crée un objet de pilote Web Firefox en utilisant le pilote Web.Firefox() méthode et la stocke dans un le navigateur variable. le chemin_exécutable L'argument est utilisé pour indiquer au pilote Web où rechercher le binaire du pilote Firefox Gecko. Dans ce cas, le pilote de gecko binaire de la Conducteurs/ répertoire du projet.

Sur la ligne 6, le navigateur.obtenir() la méthode se charge astuce linux.com dans un navigateur Web Firefox.

Une fois le chargement du site terminé, la ligne 7 imprime le titre du site, ici, le navigateur.Titre la propriété est utilisée pour accéder au titre du site Web.

La ligne 8 ferme le navigateur Web Firefox à l'aide de la le navigateur.quitter() méthode.

Vous pouvez exécuter le script Python ex00.py avec la commande suivante :

$ python3 ex00.py

Selenium devrait ouvrir un navigateur Web Firefox et visiter le linuxhint.site Web com automatiquement.

Une fois la page chargée, elle doit imprimer le titre du site Web sur la console et le navigateur Web doit se fermer automatiquement.

Ainsi, Selenium fonctionne correctement avec le pilote Firefox Gecko.

Exemple 01 : Exécuter Firefox en mode Headless à l'aide de Selenium

Vous pouvez également exécuter Selenium avec Firefox Gecko Driver en mode sans tête. Le mode sans tête de Selenium Firefox ne nécessite aucune interface utilisateur graphique installée sur votre ordinateur. Ainsi, vous pourrez exécuter Selenium Firefox sur n'importe quel serveur sans tête Linux.

Tout d'abord, créez un nouveau script Python ex01.py dans votre répertoire de projet et tapez les lignes de codes suivantes dedans.

à partir du pilote Web d'importation de sélénium
du sélénium.pilote Web.firefox.options d'importation Options
du sélénium.pilote Web.commun.clés importer des clés
firefoxOptions = Options()
FirefoxOptions.add_argument("-headless")
navigateur = pilote Web.Firefox(executable_path="./drivers/geckodriver", options=firefoxOptions)
le navigateur.obtenir('https://www.astuce linux.com')
print('Titre : %s' % navigateur.Titre)
le navigateur.quitter()

Une fois que vous avez terminé, enregistrez le ex01.py Script Python.

Les lignes 1 et 3 sont les mêmes que les lignes 1 et 2 de ex00.py Script Python.

La ligne 2 importe Firefox Options du sélénium bibliothèque.

La ligne 5 crée un objet Firefox Options et le stocke dans le FirefoxOptions variable.

La ligne 6 utilise le FirefoxOptions.add_argument() méthode pour ajouter le -sans tête Indicateur de ligne de commande Firefox au FirefoxOptions objet.

Sur la ligne 8, options l'argument est utilisé pour passer le FirefoxOptions lors de l'initialisation du pilote Web Firefox à l'aide du pilote Web.Firefox() méthode.

Le reste des lignes du ex01.py le script est le même que le ex00.py.

Vous pouvez exécuter le script Python ex01.py avec la commande suivante :

$ python3 ex01.py

Comme vous pouvez le voir, le titre du site (linuxhint.com) est imprimé sur la console sans ouvrir aucune version graphique du navigateur Web Firefox.

Comme vous pouvez le voir, Selenium travaille également sur un environnement sans tête Ubuntu où aucune interface utilisateur graphique n'est installée.

Maintenant que vous savez comment passer le -sans tête Indicateur/option de ligne de commande Firefox à l'aide du pilote Selenium Firefox Gecko, vous pouvez également transmettre n'importe quel autre indicateur/option de ligne de commande Firefox.

Vous pouvez trouver tous les drapeaux/options de ligne de commande Firefox pris en charge dans les options de ligne de commande - Mozilla | page MDN.

Exemple 02 : Extraction de Lorem Ipsum à l'aide de Selenium

Dans cette section, je vais vous montrer comment faire du web scrapping de base en utilisant Selenium Firefox Gecko Driver.

Tout d'abord, visitez la page Lorem Ipsum Generator à partir du navigateur Web Firefox. Comme vous pouvez le voir, la page a généré 5 paragraphes aléatoires. Extrayons tout le texte généré (les 5 paragraphes) de cette page.

Avant de commencer à extraire des informations d'une page Web, vous devez connaître la structure HTML du contenu de la page Web.

Vous pouvez facilement trouver la structure HTML du contenu que vous souhaitez extraire en utilisant le Outil de développement Firefox. Ouvrir Outil de développement Firefox, appuyez sur le bouton droit de la souris (RMB) sur la page et cliquez sur Inspecter l'élément (Q).

Outil de développement Firefox devrait être ouvert. Clique sur le Icône d'inspection () comme indiqué dans la capture d'écran ci-dessous.

Survolez le premier paragraphe, comme indiqué dans la capture d'écran ci-dessous. Ensuite, appuyez sur le bouton gauche de la souris (LMB) pour le sélectionner.

La structure HTML des paragraphes doit être affichée dans le Inspecter onglet du Outil de développement Firefox. Comme vous pouvez le voir, les paragraphes lorem ipsum générés sont à l'intérieur d'un div étiquette qui a le identifiant à lèvres.

Pour extraire les paragraphes lorem ipsum à l'aide du pilote Selenium Firefox Gecko, créez un nouveau script Python ex02.py dans votre répertoire de projet et tapez les lignes de codes suivantes dedans.

à partir du pilote Web d'importation de sélénium
du sélénium.pilote Web.firefox.options d'importation Options
du sélénium.pilote Web.commun.clés importer des clés
firefoxOptions = Options()
FirefoxOptions.add_argument("-headless")
navigateur = pilote Web.Firefox(executable_path="./drivers/geckodriver", options=firefoxOptions)
le navigateur.obtenir('https://www.à lèvres.com/flux/html')
lèvres = navigateur.find_element_by_id('lipsum')
imprimer (lipsum.texte)
le navigateur.quitter()

Une fois que vous avez terminé, enregistrez le ex02.py Script Python.

La ligne 10 charge la page du générateur lorem ipsum en utilisant le le navigateur.obtenir() méthode.

Le contenu du lorem ipsum est à l'intérieur d'un div tag avec l'identifiant à lèvres. La ligne 12 utilise le le navigateur.find_element_by_id() méthode pour le sélectionner à partir de la page Web et le stocker dans le à lèvres variable.

La ligne 13 imprime le contenu du lorem ipsum généré sur la console. Ici le texte La propriété est utilisée pour accéder au contenu de la div élément avec l'identifiant à lèvres.

Maintenant, exécutez le script Python ex02.py comme suit:

$ python3 ex02.py

Comme vous pouvez le voir, Selenium a extrait correctement le contenu de lorem ipsum de la page Web.

Exécuter le script Python ex02.py vous donnera à nouveau une sortie différente, comme vous pouvez le voir dans la capture d'écran ci-dessous.

Exemple 03 : Extraction de données de liste à l'aide de Selenium

Dans cette section, je vais vous montrer un exemple de données de liste de scrapping Web à partir d'un site Web utilisant le pilote Selenium Firefox Gecko en mode sans tête.

Tout d'abord, visitez le générateur de noms aléatoires.informations du navigateur Web Firefox. Ce site Web générera 10 noms aléatoires à chaque fois que vous rechargerez la page, comme vous pouvez le voir dans la capture d'écran ci-dessous. Notre objectif est d'extraire ces noms aléatoires en utilisant Selenium en mode sans tête.

Pour connaître la structure HTML de la liste, il faut ouvrir le Outil de développement Firefox. Pour ce faire, appuyez sur le bouton droit de la souris (RMB) sur la page et cliquez sur Inspecter l'élément (Q).

Outil de développement Firefox devrait être ouvert. Clique sur le Icône d'inspection () comme indiqué dans la capture d'écran ci-dessous.

Ensuite, survolez la liste des Noms aléatoires. La liste doit être mise en surbrillance comme indiqué dans la capture d'écran ci-dessous. Ensuite, appuyez sur le bouton gauche de la souris (LMB) pour sélectionner la liste.

Le code HTML de la liste doit être mis en évidence dans le Inspecteur onglet du Outil de développement Firefox. Ici, la liste des noms aléatoires est à l'intérieur d'un div élément. le div élément a le classer Nom résultats. A l'intérieur, nous avons un vieux élément avec le classer Nom liste de nom. À l'intérieur de vieux élément, chacun des noms est dans un je suis élément.

De là, nous pouvons dire que pour arriver à la je suis balises, nous devons suivre div.résultats > ol.liste de noms > li

Ainsi, notre sélecteur CSS sera div.résultats ol.nameList li (il suffit de remplacer le > signes avec espace)

Pour extraire ces noms aléatoires, créez un nouveau script Python ex03.py et tapez les lignes de codes suivantes dedans.

à partir du pilote Web d'importation de sélénium
du sélénium.pilote Web.firefox.options d'importation Options
du sélénium.pilote Web.commun.clés importer des clés
firefoxOptions = Options()
FirefoxOptions.add_argument("-headless")
navigateur = pilote Web.Firefox(executable_path="./drivers/geckodriver", options=firefoxOptions)
le navigateur.get("http://random-name-generator.Info/")
nameList = navigateur.find_elements_by_css_selector('div.résultats ol.nameList li')
pour le nom dans nameList :
imprimer(nom.texte)
le navigateur.quitter()

Une fois que vous avez terminé, enregistrez le ex03.py Script Python.

La ligne 10 charge le site Web du générateur de noms aléatoires à l'aide du le navigateur.obtenir() méthode.

La ligne 11 sélectionne la liste de noms à l'aide de la le navigateur.find_elements_by_css_selector() méthode. Cette méthode utilise le sélecteur CSS div.résultats ol.nameList li pour trouver la liste des noms. Ensuite, la liste de noms est stockée dans le liste de nom variable.

Aux lignes 13 et 14, un pour la boucle est utilisée pour parcourir le liste de nom liste de je suis éléments. A chaque itération, le contenu du je suis l'élément est imprimé sur la console.

Maintenant, exécutez le script Python ex03.py comme suit:

$ python3 ex03.py

Comme vous pouvez le voir, le script Python ex03.py récupéré tous les noms aléatoires de la page Web.

Si vous exécutez le script une deuxième fois, il devrait renvoyer une nouvelle liste de noms aléatoires, comme vous pouvez le voir dans la capture d'écran ci-dessous.

Conclusion:

Cet article devrait vous aider à démarrer avec Selenium en utilisant le navigateur Web Firefox. Vous devriez pouvoir configurer un projet de pilote Selenium Firefox Gecko assez facilement et exécuter les tests de votre navigateur, l'automatisation Web et les tâches de grattage Web.

5 meilleurs jeux d'arcade pour Linux
De nos jours, les ordinateurs sont des machines sérieuses utilisées pour les jeux. Si vous ne pouvez pas obtenir le nouveau score élevé, vous saurez c...
Bataille pour Wesnoth 1.13.6 Développement publié
Bataille pour Wesnoth 1.13.6 publiée le mois dernier, est la sixième version de développement de la 1.13.x series et il apporte un certain nombre d'am...
Comment installer League Of Legends sur Ubuntu 14.04
Si vous êtes fan de League of Legends, alors c'est l'occasion pour vous de tester League of Legends. Notez que LOL est pris en charge sur PlayOnLinux ...