1. Bases techniques
Remplissage et soumission des formulaires
Travailler avec des formulaires est souvent nécessaire pour automatiser l’inscription des utilisateurs, remplir des questionnaires, collecter des données et bien plus encore. Quand tu dois remplir des centaines de formulaires, le faire manuellement, c’est comme essayer de manger une pastèque avec une paille. Avec nos super-pouvoirs de Selenium, on peut faire ça en quelques secondes.
Regardons pour commencer comment on peut remplir des champs de texte et soumettre des formulaires. Prenons comme exemple un formulaire typique de connexion à un site et explorons les étapes de base :
from selenium import webdriver
# Configuration du driver (par exemple, ChromeDriver)
driver = webdriver.Chrome()
try:
# Ouverture de la page web
driver.get("https://example.com/login")
# Recherche du champ de saisie pour le nom d'utilisateur et saisie de texte
username_input = driver.find_element_by_name("username")
username_input.send_keys("mon_identifiant")
# Recherche du champ de saisie pour le mot de passe et saisie de texte
password_input = driver.find_element_by_name("password")
password_input.send_keys("mon_mot_de_passe")
# Recherche du bouton d'envoi de formulaire et clique dessus
submit_button = driver.find_element_by_name("submit")
submit_button.click()
finally:
# Fermeture du driver
driver.quit()
Validation et gestion des erreurs
Rien ne gâche plus la journée d’un développeur que des erreurs qui surgissent au mauvais moment. Du coup, on les gère à l’avance. Utilise try/except
pour attraper les erreurs et logue-les pour comprendre ce qui ne va pas.
try:
username_input = driver.find_element_by_name("username")
username_input.send_keys("mon_identifiant")
except Exception as e:
print(f"Erreur lors de la saisie du nom d'utilisateur : {e}")
logging.error("Erreur lors de la saisie du nom d'utilisateur", exc_info=True)
2. Checkboxes (Cases à cocher)
Maintenant qu’on sait déjà cliquer sur des boutons, essayons de sélectionner plusieurs options dans une liste. Pour cocher ou décocher une case, on peut aussi utiliser la méthode click()
. Si on veut vérifier si une case est cochée, on utilise l’attribut is_selected()
.
checkbox = driver.find_element_by_id("checkbox_id")
if not checkbox.is_selected():
checkbox.click()
3. Radio Buttons (Boutons radio)
Les boutons radio permettent de sélectionner une seule option parmi plusieurs. Ils fonctionnent comme les cases à cocher : on sélectionne une option avec click()
et on vérifie l’état avec is_selected()
.
radio_button = driver.find_element_by_id("radio_button_id")
if not radio_button.is_selected():
radio_button.click()
4. Dropdowns (Listes déroulantes)
Les listes déroulantes contiennent plusieurs options. Avec Selenium, il y a la classe Select
qui a des méthodes spéciales pour manipuler ces listes.
from selenium.webdriver.support.ui import Select
dropdown = Select(driver.find_element_by_id("dropdown_id"))
dropdown.select_by_visible_text("Option 1")
Tu peux aussi sélectionner des options avec select_by_index()
ou select_by_value()
.
5. Zones de texte (Text Areas)
Les zones de texte sont comme les champs de texte, mais elles servent généralement à saisir de grandes quantités de texte. Le fonctionnement est identique à celui des champs de texte.
text_area = driver.find_element_by_id("textarea_id")
text_area.send_keys("Ceci est un exemple de texte pour la zone de texte.")
6. Calendrier (Date Picker)
Les champs calendrier permettent de sélectionner des dates. Si c’est un simple champ texte prenant en charge le format de date, utilise send_keys()
pour saisir une valeur au format requis.
date_field = driver.find_element_by_id("date_field_id")
date_field.send_keys("2023-12-25") # Le format de la date peut varier selon le site
Cependant, certains champs calendrier nécessitent des actions supplémentaires, comme l’ouverture d’un calendrier popup et la sélection de la date.
7. Champs fichiers (File Upload)
Ces champs permettent de télécharger des fichiers sur le serveur. Tu peux interagir avec eux en utilisant également send_keys()
, en passant le chemin du fichier sur ton ordinateur local.
file_input = driver.find_element_by_id("file_upload_id")
file_input.send_keys("/chemin/vers/fichier.txt")
8. Champs cachés (Hidden Fields)
Les champs cachés ne s’affichent pas sur la page, mais peuvent être utilisés pour stocker des informations nécessaires à l’envoi du formulaire. Tu peux interagir avec eux uniquement si tu as accès à leur valeur (par exemple, pour vérifier ou modifier la valeur).
hidden_field = driver.find_element_by_id("hidden_field_id")
value = hidden_field.get_attribute("value")
print("Valeur du champ caché :", value)
9. Vérification de la réussite des actions
Obtenir des données sur l’exécution des actions est ton baromètre de succès. Après l’envoi du formulaire, tu veux sûrement t’assurer que la demande a été acceptée avec succès, n’est-ce pas ? Voici comment tu peux le faire :
# Vérification de l’autorisation réussie sur le site
if "Bienvenue" in driver.page_source:
print("Autorisation réussie !")
else:
print("Une erreur est survenue lors de l’autorisation.")
10. Problèmes et solutions
Problèmes
- Instabilité : Les pages web changent souvent. Si la structure de la page change, cela peut provoquer des défaillances dans les scripts, donc il est nécessaire de vérifier régulièrement le code.
- Dépendance à la vitesse réseau : Le temps de chargement des pages et des éléments peut varier. Utilise des attentes explicites (explicit waits) pour gérer les délais.
Solutions
- Logging : Tiens un journal de toutes les actions pour mieux comprendre les problèmes. L’utilisation de la bibliothèque
logging
simplifie grandement la journalisation. - Modularité du code : Divise les actions complexes en fonctions et modules pour faciliter les modifications et les tests.
GO TO FULL VERSION