La bibliothèque Selenium Python

Python-selenium-python-bot
 

1. A propos de la bibliothèque Selenium

Selenium est un outil puissant pour contrôler les navigateurs Web via des programmes et effectuer l'automatisation du navigateur. Il est fonctionnel pour tous les navigateurs, fonctionne sur tous les principaux systèmes d'exploitation et ses scripts sont écrits dans différents langages, à savoir Python, Java, C#, etc.,Quand à nous, nous travaillerons avec Python dans ce tutoriel. Ce tutoriel Selenium couvre tous les sujets tels que – WebDriver, WebElement, tests unitaires avec Selenium tout en se limitant aux usages basiques de cette bibliothèque.
Afin de découvrir plus de fonctionnalités avancées, nous vous conseillons de voir la documentation officielle de Selenium: https://selenium-python.readthedocs.io/

 

2. Prérequis

  1. Python 3.x : installé et configuré sur votre machine
  2. Un IDE : VSCode, Spyder, Tonny, PyCharm...
  3. Un navigateur web : compatible (Chrome, Firefox, Safari etc.)
  4. WebDriver : ChromeDriver ou GeckoDriver (pour Firefox) pour communiquer avec le navigateur




 

3. Installation de Selenium et WebDriver

3.1 Installation de Selenium

L'installation de la bibliothèque Selenium est une opération assez simple en utilisant l'utilitaire pip:

3.2 Téléchargement de WebDriver

  1. GeckoDriver pour Firefox: https://github.com/mozilla/geckodriver/releases
  2. ChromeDriver pour Chrome: https://chromedriver.chromium.org/downloads
  3. EdgeDriver pour Edge: https://developer.microsoft.com/en-us/microsoft-edge/tools/webdriver/
  4. SafariDriver pour safari: https://webkit.org/blog/6900/webdriver-support-in-safari-10/

Placez ensuite le fichier exécutable du WebDriver dans un répertoire accessible dans votre PATH ou spécifiez son chemin directement dans le script.

 

4. Usage de la bibliothèque selenium

4.1 Initialisation du WebDriver

Nous allons utiliser GeckoDriver de FireFox pour faire une initialisation. A cet effet veuillez télécharger geckodriver-v0.34.0-win64.zip depuis la page officielle sur Github.

Exemple (ouvrir Wikipedia sur firefox pendant 10 secondes)

Nous allons faire un petit essai de Selenium pour ouvrir une page web à titre d'exemple : www.wikipedia.org. Pour cela mettez le fichiers geckodriver.exe dans le même répertoire du fichier Python:

4.2 Gérer les interactions

La bibliothèque Selenium permet de réaliser des opérations magiques d'interaction avec des pages web, comme l'ouverture d'une page web spécifique tout en contrôlant la durée d'ouverture, l'inscription aux différents sites web via leurs formulaires d'inscription, et c'est là que les développeurs créent ce qu'ils nomment les bots ou plustôt des robot spammeurs (spambot en anglais)... Afin d'intéragir avec une page web et pouvoir manipuler son formulaire, Selenium permet au préalable la récupération des noms des champs de ce formulaire via la méthode find_element():

Code complet

Exemple (connexion d'un utilisateur à un site web)

Nous allons voir maintenant comment gérer les interactions de Selenium avec les formulaires des pages web en prenant comme exemple la connexion à notre site : www.tresfacile.net en utilisant les identifiants d'un compte utilisateur déjà existant:

Si vous sélectionnez le formulaire de connexion:

et vous examinez ensuite son code source, vous obtenez les éléments d'indentification suivants:

Cela indique le nômage suivant:

  1. log : est utilisé pour le nom du champ nom d'utilisateur
  2. pwd : est utilisé pour le nom du champ password

Code final de connexion

Après exécution Firefox s'ouvre avec le formulaire de connexion préremplie avec les identifiants de connexion:

et quelques secondes plus tard, vous serez redirigé vers le tableau de bord de l'utilisateur qui est connecté:

4.3 Attente explicite

4.4 Navigation

5. Créer et connecter un bot sur un site web

5.1 Plate-forme utilisée

Nous allons essayer maintenant de créer un bot qui crée son compte sur un site web, se connecte et envoie des commentaires sur des article du site. A cet effet nous créons un site WordPress en localhost au sein duquel on installe l'extension gratuite Theme My Login qui permet de gérer l'authentification des utilisateurs. Le contenu WordPress de notre site sera déposé dans un répertoire 'C:\xampp\htdocs\mysite'. Et par suite l'adresse url de notre site sera : http://localhost/mysite

5.2 Script d'enregistrement du bot

En examinant le code source de la page d'enregistrement des utilisateur générée par le plugin Theme My Login: http://localhost/mysite/register/ et en examinant son code source on obtient les noms des champs du formulaire d'enregistrement:
  1. Identifiant : user_login
  2. E-mail  : user_email
  3. Password : user_pass1
  4. Confirm Password : user_pass2
  5. Submit Button : submit

Le script sera donc de la forme:

Le script ci-dessus, crée un bot (un compte utilisateur virtuel) dont les identifiants sont:

  1. Identifiant : 'Iam_Bot'
  2. E-mail : 'iambot@gmail.com'
  3. Password : 'IamBot&2024'

5.3 Script de connexion du bot

Pour connecter le bot, nous allons créer un script similaire au précendant en changeant seulement la page d'enregistrement par celle de connexion:

5.4 Script d'insertion des commentaires par le bot

Le bot peut être programmé pour insérer des commentaires en bas des article pourvue que les commentaires soient autorisés par l'administrateur du site. Nous allons à titre d'exemple localiser un article via son ardresse url : http://localhost/mysite/langage-php/

Localisons ensuite le formulaire sur la page et identifier ses composants via le code source de la page:

Nous allons donc utiliser dans notre script uniquement le champ textarea du commentaire et le bouton submit:

  1.  Commentaire : comment
  2. Submit_button : submit

Script d'insertion des commentaires:

6. Gestion des fenêtres et des onglets

6.1 Usage des onglets

6.2 Gestion des alertes

6.3 Téléchargement de fichiers

Pour télécharger un fichier, vous devrez configurer le profil du navigateur pour gérer les téléchargements automatiques.




7. Exécution d'un code JavaScript

 

8. Capture d'écran

 

9. Gestion des cookies

 

10. Tests automatisés

Selenium est souvent utilisé avec des frameworks de test comme unittest ou pytest.

 

 

Younes Derfoufi
CRMEF OUJDA

Leave a Reply