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

Playwright : attente automatique, sélecteurs & tracing

Rencontrez maintenant Playwright, l'outil plus récent. Le meilleur, c'est ce que vous cessez d'écrire : la plupart de ces attentes manuelles disparaissent.

Par Shahriyar · Mis à jour

L'idée, en une ligne

Avant chaque action, Playwright vérifie que l'élément est réellement prêt et réessaie tout seul jusqu'à ce qu'il le soit. Vous décrivez ce que vous voulez ; il gère l'attente.

Les vérifications de disponibilité, en mots simples

Playwright attend que l'élément soit :

Un clic attend les cinq. Un fill attend visible, activé et éditable. Des catégories entières d'instabilité disparaissent simplement.

Des sélecteurs qui se lisent comme un utilisateur

Préférez page.get_by_role("button", name="Sign in"). Il correspond à la façon dont une personne (et un lecteur d'écran) voit la page, donc il survit aux changements du DOM. Ses cousins sont get_by_label, get_by_placeholder, get_by_text, et get_by_test_id. Quand vous avez besoin de CSS ou XPath brut, page.locator(css) est la porte de sortie.

Voyez-le à l'œuvre

▸ try it
from playwright.sync_api import Page, expect

def test_login(page: Page):
    page.goto("https://www.saucedemo.com/")

    # Locators by role and placeholder, no manual waits
    page.get_by_placeholder("Username").fill("standard_user")
    page.get_by_placeholder("Password").fill("secret_sauce")
    page.get_by_role("button", name="Login").click()

    # A web-first assertion auto-retries until it passes
    expect(page.get_by_text("Products")).to_be_visible()

# Record a trace, then open it:
#   pytest --tracing on
#   playwright show-trace trace.zip

Lisez-le de haut en bas : allez sur la page, remplissez les deux champs, cliquez sur Login, puis vérifiez que le texte Products apparaît. Aucun sleep nulle part.

Les assertions ici utilisent expect(...).to_be_visible(). Elle re-vérifie jusqu'à ce que ce soit vrai ou qu'elle expire — vous ne sondez jamais à la main.

Avancé — le tracing, votre ralenti instantané

Quand un test échoue, le tracing est la récompense. Exécutez pytest --tracing on, puis playwright show-trace trace.zip. Vous obtenez une chronologie image par image avec des instantanés du DOM, l'activité réseau, et la ligne source exacte de chaque action.

Basé sur la doc officielle Playwright (Python) — Actionability, Locators, Trace Viewer

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