Automatisation UI : Selenium + Playwright + pytest · Leçon 2 sur 6

Attentes, actions & frames — tuer l'instabilité à la source

Les tests instables — ceux qui passent, puis échouent, puis repassent — ont une cause principale. La voici, et comment la neutraliser pour de bon.

Par Shahriyar · Mis à jour

L'idée, en une ligne

La plupart de l'instabilité vient d'agir sur un élément avant que la page soit prête. Le correctif est d'attendre la bonne chose au bon moment.

Deux sortes d'attente (ne les mélangez pas)

Voyez-le à l'œuvre

▸ try it
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.action_chains import ActionChains

wait = WebDriverWait(driver, timeout=10)

# Wait for THIS condition only — not a blind sleep
btn = wait.until(EC.element_to_be_clickable((By.ID, "submit")))
btn.click()

# Hover over a menu to reveal it
menu = driver.find_element(By.ID, "account")
ActionChains(driver).move_to_element(menu).perform()

# Step inside an iframe, then step back out
driver.switch_to.frame("payment_iframe")
driver.find_element(By.ID, "card").send_keys("4111111111111111")
driver.switch_to.default_content()

Lisez-le de haut en bas : attendez que le bouton soit réellement cliquable, puis cliquez. Survolez pour révéler un menu. Entrez dans une iframe pour atteindre son contenu, puis ressortez.

Avancé — gestes, frames et fenêtres

Basé sur la doc officielle Selenium (Python) — Waits, Actions API, Frames

Toutes les leçons de Automatisation UI : Selenium + Playwright + pytest

  1. Sélecteurs Selenium : trouver l'élément que vous voulez
  2. Attentes, actions & frames — tuer l'instabilité à la source
  3. Playwright : attente automatique, sélecteurs & tracing
  4. pytest en profondeur : fixtures, conftest, parametrize & marqueurs
  5. Le Page Object Model, fait correctement
  6. Les cas difficiles : éléments dynamiques, iframes, uploads & simulation réseau