1. Introduction à l'interaction avec les éléments des formulaires
Les formulaires sur les pages web sont comme l'endroit où commence la magie de l'interaction. Imagine un formulaire comme une télécommande mystique qui permet à l'utilisateur d'interagir avec le système. Mais au lieu de donner des instructions à un robot aspirateur, on transmet des infos au site.
Comment saisir du texte dans des champs texte
D'abord, discutons de comment Selenium nous permet de saisir du texte dans les champs texte. Cela se fait grâce à la méthode send_keys(). Explorons ça étape par étape.
Important : les exemples ci-dessous utilisent la syntaxe Selenium 3. Dans Selenium 4, les méthodes find_element_by_* ont été supprimées (définitivement à partir de la version 4.3.0) : on utilise à la place la méthode universelle find_element() avec une stratégie de la classe By. C'est pourquoi chaque exemple est suivi de sa version Selenium 4.
Important : le paramètre executable_path a été retiré des constructeurs de drivers dans Selenium 4.10 — le chemin vers le driver se passe désormais via un objet Service.
from selenium import webdriver
# On configure le chemin du web-driver, c'est le chemin vers votre version de webdriver
driver = webdriver.Chrome(executable_path='path/to/chromedriver')
# On ouvre la page web
driver.get('http://example.com/login')
# On trouve le champ (par exemple par id) et on y saisit du texte
username_field = driver.find_element_by_id('username')
username_field.send_keys('mon_super_compte')
password_field = driver.find_element_by_id('password')
password_field.send_keys('mon_super_mot_de_passe')
La même chose en Selenium 4 :
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.chrome.service import Service
# On configure le chemin du web-driver, c'est le chemin vers votre version de webdriver
service = Service('path/to/chromedriver')
driver = webdriver.Chrome(service=service)
# On ouvre la page web
driver.get('http://example.com/login')
# On trouve le champ (par exemple par id) et on y saisit du texte
username_field = driver.find_element(By.ID, 'username')
username_field.send_keys('mon_super_compte')
password_field = driver.find_element(By.ID, 'password')
password_field.send_keys('mon_super_mot_de_passe')
Dans cet exemple simple, on ouvre une page et on trouve des éléments d'entrée avec leur ID. Ensuite, on utilise la méthode send_keys() pour transmettre du texte à nos champs. Oui, c'est aussi simple que faire un copier-coller !
Un petit truc important pour remplir les champs texte
Si tu remarques que le formulaire agit étrangement, c'est peut-être qu'il y a déjà du texte dans le champ. Avant d'ajouter un nouveau texte, efface l'ancien avec la méthode clear().
username_field.clear()
username_field.send_keys('nouvelle_valeur')
Ce petit truc te sauvera de nombreux maux de tête, promis !
2. Cliquer sur des boutons
Maintenant que nos champs sont remplis, il est temps de cliquer sur un bouton, par exemple pour soumettre un formulaire. Avec Selenium, cela se fait grâce à la méthode click(). Un peu comme cliquer sur "Voir plus de memes", mais de façon programmée.
# On trouve le bouton par son nom et on clique dessus
login_button = driver.find_element_by_name('login')
login_button.click()
La même chose en Selenium 4 :
# On trouve le bouton par son nom et on clique dessus
login_button = driver.find_element(By.NAME, 'login')
login_button.click()
Et voilà, notre script Selenium devient un pro du clic, capable de plus que cliquer sur "Faire un choix" dans des jeux !
Exemples d'utilisation
Regardons un exemple qui combine l'utilisation des méthodes send_keys() et click() pour remplir et soumettre un formulaire d'inscription.
# On ouvre la page d'inscription
driver.get('http://example.com/register')
# On remplit le formulaire d'inscription
driver.find_element_by_id('first_name').send_keys('Jean')
driver.find_element_by_id('last_name').send_keys('Dupont')
driver.find_element_by_id('email').send_keys('jean@example.com')
driver.find_element_by_id('password').send_keys('superSecret123')
# On clique sur le bouton "S'inscrire"
register_button = driver.find_element_by_css_selector('.register-button')
register_button.click()
La même chose en Selenium 4 :
# On ouvre la page d'inscription
driver.get('http://example.com/register')
# On remplit le formulaire d'inscription
driver.find_element(By.ID, 'first_name').send_keys('Jean')
driver.find_element(By.ID, 'last_name').send_keys('Dupont')
driver.find_element(By.ID, 'email').send_keys('jean@example.com')
driver.find_element(By.ID, 'password').send_keys('superSecret123')
# On clique sur le bouton "S'inscrire"
register_button = driver.find_element(By.CSS_SELECTOR, '.register-button')
register_button.click()
Cet exemple simple montre comment automatiser le processus d'inscription sur un site. Cela peut être utile pour tester un formulaire d'inscription et simuler l'activité des utilisateurs.
3. Traiter des formulaires capricieux
Parfois, les pages aiment plaisanter avec toi. Tu cliques sur un bouton, et il ne se passe rien. Ou pire encore - la page affiche une erreur. Parlons de quelques problèmes courants et de leurs solutions.
Travailler avec des éléments dynamiques
Parfois, les éléments sur la page ne se chargent pas immédiatement. Dans ces cas, ton script peut essayer d'interagir avec un élément avant qu'il soit chargé. C'est comme essayer de cuisiner une omelette avant même d'avoir sorti les œufs du frigo.
Pour éviter ces caprices, utilise des attentes. Selenium te permet d'attendre que l'élément devient disponible :
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
# On attend que l'élément soit cliquable avant de cliquer
register_button = WebDriverWait(driver, 10).until(
EC.element_to_be_clickable((By.CSS_SELECTOR, '.register-button'))
)
register_button.click()
Avec WebDriverWait, tu peux dire à Selenium d'attendre jusqu'à ce que l'élément soit prêt pour l'action. Ça rend ton script plus fiable.
Interagir avec des éléments invisibles
Certains éléments sur la page peuvent être invisibles — comme des boutons ou des champs cachés. Cela peut provoquer une erreur quand tu essaies d'interagir avec eux. Dans ce cas, tu peux rendre l'élément visible avec JavaScript :
driver.execute_script("arguments[0].style.visibility='visible';", hidden_element)
hidden_element.click()
Cette méthode te permet d'interagir avec des éléments qui sont cachés pour une raison ou une autre.
4. Application pratique : automatisation des formulaires
Maintenant qu'on a vu comment interagir avec des formulaires, imaginons où cela pourrait être appliqué dans la vie réelle.
Ton boss décide que tout le monde doit remplir des rapports quotidiens via un formulaire web. Et toi, bien sûr, tu veux un peu automatiser ce processus répétitif. Avec Selenium, tu peux créer un script qui remplit et soumet automatiquement le formulaire avec les données de ton rapport tous les jours.
Exemple d'automatisation de rapport
Imaginons qu'on a un site avec un formulaire pour un rapport quotidien. Le formulaire contient des champs pour ton nom, ton département, et un résumé du travail accompli. Automatisons ça :
driver.get('http://example.com/daily_report')
# On remplit le formulaire du rapport
driver.find_element_by_id('name').send_keys('Anna Dupont')
driver.find_element_by_id('department').send_keys('Technologies')
driver.find_element_by_id('report').send_keys('Aujourd'hui, j'ai corrigé tous les bugs !')
# On soumet le formulaire
submit_button = driver.find_element_by_id('submit')
submit_button.click()
La même chose en Selenium 4 :
driver.get('http://example.com/daily_report')
# On remplit le formulaire du rapport
driver.find_element(By.ID, 'name').send_keys('Anna Dupont')
driver.find_element(By.ID, 'department').send_keys('Technologies')
driver.find_element(By.ID, 'report').send_keys('Aujourd'hui, j'ai corrigé tous les bugs !')
# On soumet le formulaire
submit_button = driver.find_element(By.ID, 'submit')
submit_button.click()
Ce genre de script peut économiser un temps précieux et éviter les erreurs humaines. Garde à l'esprit que pour des formulaires complexes, il est nécessaire de tester chaque étape et de considérer les erreurs possibles.
Et voilà, on arrive à la fin de notre conférence d'aujourd'hui ! Aujourd'hui, on a appris à saisir du texte dans des champs et à cliquer sur des boutons comme des pros des formulaires en ligne, ce qui vous donne un pouvoir incroyable pour automatiser vos interactions avec les pages web.
Continue à expérimenter avec Selenium et reste avec nous pour apprendre encore plus sur comment transformer ton navigateur en une vraie machine d'automatisation !
GO TO FULL VERSION