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

Les cas difficiles : éléments dynamiques, iframes, uploads & simulation réseau

C'est les derniers 20% des vraies apps — les bouts délicats où les débutants se coincent. Bonne nouvelle : quatre motifs gèrent presque tout.

Par Shahriyar · Mis à jour

L'idée, en une ligne

Les éléments qui apparaissent tard, les iframes, les uploads de fichiers, et les fausses réponses réseau ont chacun une réponse propre et intégrée dans Playwright.

Les quatre motifs

Avancé — simuler le réseau avec page.route

Avec page.route(pattern, handler) vous interceptez une requête et y répondez vous-même avec route.fulfill(json=...). Renvoyez un catalogue fixe, forcez un 500 pour tester votre écran d'erreur, ou route.abort() pour faire croire que le backend est mort.

Voyez-le à l'œuvre

▸ try it
from playwright.sync_api import Page, Route, expect

def test_error_banner_on_500(page: Page):
    # Force the products API to fail, then check the UI copes
    def fail(route: Route):
        route.fulfill(status=500, json={"error": "down"})
    page.route("**/api/v1/products", fail)

    page.goto("https://demo.playwright.dev/api-mocking")
    expect(page.get_by_text("Something went wrong")).to_be_visible()

def test_upload(page: Page):
    page.goto("https://the-internet.herokuapp.com/upload")
    page.locator("#file-upload").set_input_files("invoice.pdf")
    page.get_by_role("button", name="Upload").click()
    expect(page.get_by_text("File Uploaded!")).to_be_visible()

Lisez-le de haut en bas : le premier test dit à l'appel des produits d'échouer, puis confirme que le message d'erreur s'affiche. Le second uploade un fichier directement dans l'input et vérifie que ça a réussi.

Basé sur la doc officielle Playwright (Python) — Frames, File Uploads, Mock APIs

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