CodeGym /Cours Java /Python SELF FR /Automatisation du travail avec des formulaires et des bou...

Automatisation du travail avec des formulaires et des boutons sur une page web pour la collecte de données

Python SELF FR
Niveau 37 , Leçon 3
Disponible

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 :

Python

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.

Python

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().

Python

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().

Python

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.

Python

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.

Python

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.

Python

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.

Python

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).

Python

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 :

Python

# 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.
Commentaires
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION