Modul 6 · Python for SDETs

UI avtomatlaşdırma
Playwright ilə

Real brauzeri idarə et — istifadəçi kimi tap, icra et və assert et

page fixture get_by_* lokatorlar avtomatik gözləmə web-first expect
AI with Rufat
Bir fixture: page
# pip install pytest-playwright
import re
from playwright.sync_api import expect
def test_products_page(page):
page.goto("http://localhost:3000/products")
expect(page).to_have_title(re.compile("TestMarket Lab"))
🌐pytest-playwright hər testə təzə page verir — təmiz brauzer konteksti, yazılacaq quraşdırma və ya söküş yox.
🎬Standart olaraq headless; idarə etməsini izləmək üçün --headed, debaq edərkən yavaşlatmaq üçün --slowmo əlavə et.
AI with Rufat
Elementləri istifadəçinin gördüyü kimi tap

Lokatorlar: get_by_*

test id
get_by_test_id()
tətbiqin göndərdiyi data-testid qarmaqları — ən möhkəm
role
get_by_role()
düymələr, linklər, başlıqlar — həm də a11y yoxlaması
label
get_by_label()
form sahələri görünən etiketinə görə
text
get_by_text()
görünən mətn — əlverişli, amma ən kövrək
🎯Niyyətə görə tap: get_by_test_id ən möhkəmdir (yenidən stilləndirməyə tab gətirən qarmaq); get_by_role / get_by_label əlçatımlılıq yoxlaması kimi də işləyir; get_by_text ən kövrəkdir.
AI with Rufat
Əl ilə sleep yox

Əməliyyatlar elementi avtomatik gözləyir

elementi tap
Playwright gözləyir: görünən & aktiv
sonra .click() / .fill()
page.get_by_label("Email").fill("customer@test.io")
page.get_by_test_id("login-submit").click()
⏱️Hər əməliyyat elementin əməliyyata yararlı olması üçün timeout-a qədər avtomatik gözləyir — ona görə time.sleep() bir qoxudur, düzəliş yox.
AI with Rufat
Təkrar cəhd edən assert-lər
from playwright.sync_api import expect
# waits until it's visible, or fails
expect(
page.get_by_test_id("nav-logout")
).to_be_visible()
expect(locator) şərt doğru olana və ya timeout çatana qədər avtomatik təkrar cəhd edir — bir millisaniyə erkən assert etməkdən flake yox.
🆚pytest-in sadə assert-indən fərqli: web-first expect bir dəfə yoxlamaq əvəzinə canlı səhifəni yoxlayır (poll).
AI with Rufat
🎭

Real brauzeri
idarə et

Rola görə tap, avtomatik gözləmə ilə icra et və web-first expect ilə assert et

🧪
Məşq
UI vasitəsilə daxil ol və logout düyməsinin görünən olmasını gözlə (expect)
🎯
Lokatorlar
CSS və ya XPath-dan əvvəl get_by_role / get_by_label-ə müraciət et
➡️
Modul 7
Page Object Model — seçiciləri oxunaqlı səhifə siniflərinin arxasında gizlə
AI with Rufat
← / → · space