CodeGym /Cours /Python SELF FR /Configuration d'un script pour automatiser une séquence d...

Configuration d'un script pour automatiser une séquence d'actions sur un site web

Python SELF FR
Niveau 37 , Leçon 4
Disponible

1. Scénario d'actions et sa séquence

Quand on commence à planifier un scénario d'automatisation, il est important de comprendre que, comme dans les contes, il faut aller du simple au complexe. Imagine que ton script est un héros qui se lance dans un voyage à travers les pages d'un site web. Chaque étape est pensée et réglée avec précision pour ne pas perdre le fil.

Créer un plan étape par étape pour automatiser

On commence par établir un plan. Qu'est-ce que tu veux accomplir ? Charger une page, remplir un formulaire, cliquer sur un bouton ? Comme on dit : "Ne pas planifier, c'est planifier un échec." On ne veut pas échouer, alors écrivons les étapes prévues.

Python

from selenium import webdriver
from selenium.webdriver.common.by import By

# Créons une instance du driver. Utilisez le driver adapté à votre navigateur.
driver = webdriver.Chrome()

# Ouvrir la page
driver.get('https://example.com/login')

# Remplir le login
driver.find_element(By.NAME, 'username').send_keys('mon_identifiant')

# Remplir le mot de passe
driver.find_element(By.NAME, 'password').send_keys('mon_mot_de_passe_sécurisé')

# Cliquez sur le bouton de connexion
driver.find_element(By.ID, 'login-button').click()

Voilà, on donne du rythme à notre danse. Chaque étape du scénario est exécutée dans l'ordre pour que ton script puisse naviguer facilement sur le site.

Journaliser les étapes d'exécution

Comme tout héros qui se respecte, notre script doit laisser des traces pour qu'on sache où il est passé et ce qu'il a fait. La journalisation, c'est comme le journal intime de ton script. Elle aide à suivre les étapes d'exécution et à identifier les erreurs si quelque chose était à corriger.

Python

import logging

# Configurer la journalisation
logging.basicConfig(level=logging.INFO)

# Exemple de journalisation d'une action
logging.info("Ouverture de la page de connexion")
driver.get('https://example.com/login')

La journalisation n'aide pas seulement au débogage, mais apporte aussi une certaine sérénité en sachant que ton script exécute chaque étape correctement. Si jamais quelque chose tourne mal, tu pourras revenir en arrière et regarder où ça a bloqué.

2. Organisation du code pour la lisibilité et les modifications

Quand le scénario devient plus complexe, il est essentiel de garder le code bien organisé. Imagine une grande fête d'anniversaire avec plein d'invités et de plats : si tout n'est pas bien disposé, ce sera le chaos total. Dans notre cas, un chaos dans le code.

Configurer une structure de code

Pour effectuer des modifications avec un minimum d'efforts, le code doit être bien structuré. Comme un trieur de chaussettes, il faut tout organiser. Utilisez des fonctions pour isoler les actions répétitives dans des blocs distincts.

Python

def login_to_site(driver, username, password):
    logging.info("Entrer le login")
    driver.find_element(By.NAME, 'username').send_keys(username)
    
    logging.info("Entrer le mot de passe")
    driver.find_element(By.NAME, 'password').send_keys(password)
    
    logging.info("Cliquer sur le bouton de connexion")
    driver.find_element(By.ID, 'login-button').click()

# Utiliser la fonction pour se connecter
login_to_site(driver, 'mon_identifiant', 'mon_mot_de_passe_sécurisé')

Utiliser des fonctions rend le code plus clair et permet de facilement effectuer des modifications, par exemple, si l'ID du bouton de connexion change, tu pourras modifier cela en un seul endroit au lieu de parcourir tout le code.

3. Exemple : Automatiser un processus d'achat sur un site

Imaginons que nous devons configurer l'automatisation du processus d'achat sur un site, comprenant les étapes suivantes :

  1. Ouverture du site et connexion au compte.
  2. Accès au catalogue de produits et ajout d'un produit au panier.
  3. Accès au panier et finalisation de l'achat.
Python

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

# Initialiser le driver avec des paramètres
def initialize_driver():
    driver = webdriver.Chrome()
    driver.implicitly_wait(10)  # Attente implicite
    return driver

# Fonction pour se connecter au compte
def login(driver, username, password):
    driver.get("https://example.com")
    driver.find_element_by_id("username").send_keys(username)
    driver.find_element_by_id("password").send_keys(password)
    driver.find_element_by_id("login_button").click()

# Fonction pour accéder au catalogue de produits et ajouter un produit au panier
def add_product_to_cart(driver):
    driver.get("https://example.com/catalog")
    product = WebDriverWait(driver, 10).until(
        EC.presence_of_element_located((By.CLASS_NAME, "product_item"))
    )
    product.click()

    add_to_cart_button = driver.find_element_by_id("add_to_cart")
    add_to_cart_button.click()

# Fonction pour accéder au panier et finaliser l'achat
def checkout(driver):
    driver.get("https://example.com/cart")
    checkout_button = WebDriverWait(driver, 10).until(
        EC.element_to_be_clickable((By.ID, "checkout"))
    )
    checkout_button.click()

# Fonction pour terminer le driver
def close_driver(driver):
    driver.quit()

# Script principal pour exécuter une séquence d'actions
def main():
    # Paramètres des données
    username = "mon_utilisateur"
    password = "mon_mot_de_passe"
    
    # Initialiser le driver
    driver = initialize_driver()
    
    try:
        # Connexion au site
        login(driver, username, password)
        
        # Accès au catalogue et ajout d'un produit au panier
        add_product_to_cart(driver)
        
        # Accès au panier et finalisation de l'achat
        checkout(driver)
    
    finally:
        # Fermer le driver
        close_driver(driver)

# Lancer le script principal
main()

Explication des fonctions

  1. initialize_driver() — une fonction pour initialiser le web driver. Elle configure une attente implicite pour tous les éléments et renvoie l'instance du driver.
  2. login() — fonction pour se connecter au site. Elle prend les paramètres username et password, qui sont utilisés pour remplir le formulaire de connexion et cliquer sur le bouton.
  3. add_product_to_cart() — cette fonction permet d'accéder au catalogue, de sélectionner un produit et de l'ajouter au panier.
  4. checkout() — fonction pour accéder au panier et finaliser l'achat.
  5. close_driver() — fonction pour fermer le driver.
  6. main() — la fonction principale qui orchestre la séquence d'actions. Elle spécifie également les données de connexion.

Avantages de cette approche

  1. Lisibilité — chaque étape est organisée sous forme de fonction distincte, ce qui rend le code facile à comprendre.
  2. Réutilisabilité — chaque fonction peut être utilisée indépendamment du script principal, par exemple pour effectuer des actions spécifiques sur le site.
  3. Facilité de test — chaque étape peut être testée individuellement pour s'assurer que tout fonctionne correctement.
  4. Flexibilité — en cas de besoin, on peut ajouter d'autres fonctions ou modifier l'ordre des actions dans main().
1
Étude/Quiz
Optimisation des scripts Selenium, niveau 37, leçon 4
Indisponible
Optimisation des scripts Selenium
Optimisation des scripts Selenium
Commentaires
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION