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

Le Page Object Model, fait correctement

Une fois que vous avez plus d'une poignée de tests, ils commencent à s'éparpiller. Ce motif les garde bien rangés — et c'est exactement la structure que les examinateurs espèrent voir.

Par Shahriyar · Mis à jour

Le problème, en une ligne

Quand les sélecteurs sont copiés-collés à travers de nombreux tests, un seul bouton renommé casse vingt fichiers. C'est une taxe de maintenance dont vous ne voulez pas.

L'idée, en une ligne

Le Page Object Model donne à chaque page (ou composant) une classe qui possède ses sélecteurs et offre des actions en langage clair. Les tests appellent les actions et ne touchent jamais un sélecteur brut.

Où tracer la ligne

Gardez les méthodes au niveau de l'utilisateur. Un test devrait se lire comme cart.add_first_item(), jamais un sélecteur brut. Quand l'UI change, vous éditez une méthode dans une classe et chaque test continue de passer.

Voyez-le à l'œuvre

▸ try it
# pages/login_page.py — locators + actions, NO assertions
from playwright.sync_api import Page

class LoginPage:
    def __init__(self, page: Page):
        self.page = page
        self.username = page.get_by_placeholder("Username")
        self.password = page.get_by_placeholder("Password")
        self.login_btn = page.get_by_role("button", name="Login")

    def load(self):
        self.page.goto("https://www.saucedemo.com/")

    def login(self, user: str, pw: str):
        self.username.fill(user)
        self.password.fill(pw)
        self.login_btn.click()

# test_login.py — scenario + assertions live here
from playwright.sync_api import expect
from pages.login_page import LoginPage

def test_valid_login(page):
    login = LoginPage(page)
    login.load()
    login.login("standard_user", "secret_sauce")
    expect(page.get_by_text("Products")).to_be_visible()

Lisez-le de haut en bas : la classe page sait où sont les champs et comment se connecter. Le test dit juste « charge, connecte-toi, et vérifie que j'ai atterri sur Products ». Propre et facile à lire.

Avancé — c'est ainsi que les frameworks passent à l'échelle

Basé sur la doc officielle Selenium (Page Object Models) et le guide POM de Playwright

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