Selenium

Automatisation Web Selenium avec Python

Automatisation Web Selenium avec Python
Tout le monde utilise le Web à un moment ou à un autre, c'est donc un énorme appel pour les développeurs de s'assurer que leurs applications Web fonctionnent comme prévu. Pour ce faire, l'automatisation du Web pourrait être très utile.

Pour qu'un logiciel commercial réussisse, il doit subir quelques tests. L'automatisation pourrait être utile pour les tests utilisateurs, simulant l'utilisation d'un logiciel comme le ferait un utilisateur. Il est également utile pour les tests de pénétration, comme essayer de déchiffrer des mots de passe, effectuer des injections SQL, etc.

Mis à part les tests, l'automatisation Web pourrait être très utile pour gratter les sites Web lourds en JavaScript.

Selenium est l'un des outils les plus efficaces pour l'automatisation du Web. Il est également très populaire parmi différents langages, disponible dans des langages tels que Java, JavaScript.

Installation

Selenium peut être installé en python à l'aide du module pip comme indiqué dans la commande ci-dessous :

pip installer le sélénium

Il installerait la bibliothèque et les dépendances nécessaires, l'installation peut être confirmée en l'important dans une session interactive.

$ python
Python 3.5.2 (par défaut, 14 sept. 2017, 22:51:06)
[CCG 5.4.0 20160609] sur Linux
Tapez "aide", "droit d'auteur", "crédits" ou "licence" pour plus d'informations.
>>> importer du sélénium

Puisqu'aucune erreur ne s'est produite, cela signifie que notre installation a réussi. Cependant, cela ne s'arrête pas là; c'est parce que le sélénium fonctionne de pair avec des navigateurs tels que Chrome et Firefox et qu'il a besoin d'un pilote du navigateur pour pouvoir poursuivre ses tâches.

Nous allons voir comment installer les pilotes. Pour Mozilla Firefox, vous pouvez télécharger son pilote appelé pilote de gecko depuis la page github. Si vous êtes un utilisateur de Chrome, vous pouvez télécharger son pilote appelé Chromedriver du site officiel.

Après le téléchargement, vous ajoutez ensuite le pilote au chemin. Personnellement, j'aimerais garder un tel fichier dans mon /usr/local/bin répertoire, et je vous conseillerais de faire de même.

Si vous souhaitez faire de même, la commande ci-dessous devrait le déplacer de votre répertoire actuel vers le poubelle annuaire.

$ sudo mv geckodriver /usr/local/bin
$ sudo mv chromedriver /usr/local/bin

Ajouter pilote de gecko ou alors Chromedriver au chemin à partir de ce répertoire, exécutez la commande suivante.

$ export CHEMIN=$CHEMIN:/usr/local/bin/geckodriver
$ export CHEMIN=$CHEMIN:/usr/local/bin/chromedriver

Après avoir ajouté le pilote de votre navigateur souhaité au chemin, vous pouvez confirmer si tout fonctionne bien en exécutant ce qui suit à partir d'une session interactive.

Pour Firefox :

$ python
Python 3.5.2 (par défaut, 14 sept. 2017, 22:51:06)
[CCG 5.4.0 20160609] sur Linux
Tapez "aide", "droit d'auteur", "crédits" ou "licence" pour plus d'informations.
>>> à partir du pilote Web d'importation de sélénium
>>> pilote Web.Firefox()

Pour Chrome :

$ python
Python 3.5.2 (par défaut, 14 sept. 2017, 22:51:06)
[CCG 5.4.0 20160609] sur Linux
Tapez "aide", "droit d'auteur", "crédits" ou "licence" pour plus d'informations.
>>> à partir du pilote Web d'importation de sélénium
>>> pilote = pilote Web.Chrome()

Après avoir exécuté cela, si un navigateur apparaît, tout fonctionne bien. Maintenant, nous pouvons continuer à faire des trucs sympas avec Selenium.

La plupart du code pour le reste de cet article serait fait dans la session interactive, mais vous pouvez l'écrire dans un fichier comme votre script python habituel.

De plus, nous travaillerions sur la conducteur variable du code ci-dessus.

Visiter des pages Web

Une fois la page Web ouverte, vous pouvez visiter n'importe quelle page Web en appelant le obtenir méthode sur conducteur. Le navigateur ouvert charge alors l'adresse transmise, comme il le ferait si vous le faites vous-même.

N'oubliez pas d'utiliser http:// ou https://, sinon vous auriez à gérer des erreurs désagréables.

>>> chauffeur.obtenir("http://google.com")

Cela chargerait la page d'accueil de Google.

Obtenir le code source

Maintenant que nous avons appris à visiter des pages Web, nous pouvons extraire des données de la page Web visitée.

Du conducteur objet, nous pouvons obtenir le code source en appelant le page_source attribut, vous pouvez ensuite faire ce que vous voulez avec le html en utilisant la bibliothèque BeautifulSoup.

>> chauffeur.page_source

Remplir les zones de texte

Si, par exemple, nous avons chargé la page d'accueil de Google et que nous souhaitons saisir des informations dans le champ de recherche ; ça peut se faire facilement.

Pour ce faire, nous utilisons l'élément Inspector pour vérifier le code source et voir les informations de balise du champ de recherche. Pour ce faire, faites simplement un clic droit sur le champ de recherche et sélectionnez inspecter l'élément.

Sur ma machine, j'ai les éléments suivants :

value="" aria-label="Rechercher" aria-haspopup="false" role="combobox" aria-autocomplete="list"
style="border : moyen aucun ; remplissage : 0px ; marge : 0px ; hauteur : auto ; largeur : 100 % ;
fond : transparent
url("data:image/gif;base64,R0lGODlhAQABAID/AMDAwAAAACH5BAEAAAAALAAAAAABAAEAAAICRAEA
Ow%3D%3D") répéter le défilement 0% 0% ; position : absolue ; z-index : 6 ; gauche : 0px ; contour :
moyen aucun ;" dir="ltr" orthographe="false" type="text">

Avec le sélénium, nous pouvons sélectionner des éléments soit par nom de balise, identifiant, nom de classe, etc.

Ils peuvent être mis en œuvre avec les méthodes suivantes :

.find_element_by_id
.find_element_by_tag_name
.find_element_by_class_name
.find_element_by_name

Depuis la page web de google, le champ de recherche a un identifiant lst-ib, donc nous trouverions élément par id.

>>> search_box = pilote.find_element_by_id("lst-ib")

Maintenant que nous avons trouvé l'élément et l'avons enregistré dans un Barre de recherche variable, nous pouvons effectuer certaines opérations sur le champ de recherche.

>>> champ_recherche.send_keys("Planète Terre")

Cela saisirait le texte « Planète Terre » dans la boîte.

>>> champ_recherche.dégager()

Cela effacerait le texte saisi de la zone de recherche. Vous devriez utiliser le envoyer_clés méthode à nouveau, dans la section suivante, nous cliquerions sur le bouton de recherche afin que nous ayons quelque chose à rechercher.

En cliquant sur les bons boutons

Maintenant que nous avons rempli le champ de recherche avec quelques informations, nous pouvons continuer et rechercher.

De la même manière que nous avons trouvé le champ de recherche, nous allons de la même manière que nous allons trouver le bouton de recherche.

Sur ma machine, j'ai les éléments suivants :

type="soumettre">

En regardant cela, nous pouvons utiliser l'attribut name. Nous pouvons l'obtenir en utilisant le code ci-dessous :

>>> search_button = pilote.find_element_by_name("btnK")

Après avoir trouvé la balise désirée, on peut alors cliquer sur le bouton à l'aide du Cliquez sur méthode.

>>> bouton_recherche.Cliquez sur()

Attention cependant, en raison des suggestions automatiques de Google, vous risquez de chercher autre chose.

Pour contourner cela, vous devez faire en sorte que le clavier appuie immédiatement sur la touche Entrée. Les clés dépassent le cadre de cet article, mais voici quand même le code.

>>> du sélénium.pilote Web.commun.clés importer des clés
>>> search_box = pilote.find_element_by_id("lst-ib")
>>> champ_recherche.send_keys("Planète Terre")
>>> champ_recherche.send_keys(Clés.REVENIR)

Avec le code ci-dessus, nous n'avons pas à cliquer sur le bouton de recherche. Cela fonctionne exactement comme lorsque nous appuyons sur la touche Entrée après avoir saisi les valeurs de recherche.

Cette méthode de clic sur les boutons ne fonctionne pas seulement avec les boutons, elle fonctionne aussi avec les liens.

Prendre des captures d'écran

Vous avez bien lu! Vous pouvez prendre des captures d'écran en utilisant du sélénium, et c'est aussi simple que les sections précédentes.

Ce que nous allons faire, c'est appeler le save_screenshot méthode sur l'objet pilote, nous passerions ensuite le nom de l'image et la capture d'écran serait prise.

>>> chauffeur.save_screenshot("Planète-terre.png")

Assurez-vous que le nom de l'image a un .png, sinon vous pourriez vous retrouver avec une image corrompue.

Lorsque vous avez terminé les opérations, vous pouvez fermer le navigateur en exécutant le code suivant :

>>> chauffeur.Fermer()

Conclusion

Le sélénium est connu comme un outil très puissant, et pouvoir l'utiliser est considéré comme une compétence vitale pour les testeurs d'automatisation. Selenium peut faire beaucoup plus que ce qui est discuté dans cet article, les mouvements du clavier peuvent en fait être reproduits comme indiqué avec Clés.REVENIR. Si vous souhaitez en savoir plus sur le sélénium, vous pouvez consulter son Documentation, c'est assez clair et facile à utiliser.

Comment utiliser le moteur de triche GameConqueror sous Linux
L'article couvre un guide sur l'utilisation du moteur de triche GameConqueror sous Linux. De nombreux utilisateurs qui jouent à des jeux sur Windows u...
Meilleurs émulateurs de console de jeu pour Linux
Cet article répertorie les logiciels d'émulation de console de jeu populaires disponibles pour Linux. L'émulation est une couche de compatibilité logi...
Meilleures distributions Linux pour les jeux en 2021
Le système d'exploitation Linux a parcouru un long chemin depuis son apparence originale, simple et basée sur le serveur. Ce système d'exploitation s'...