Modul 7 · Python for SDETs

Page Object
Model

Seçiciləri oxunaqlı səhifə siniflərinin arxasında gizlə — testlər ssenari olur

səhifə sinifləri seçicilər üçün bir yer pages/ paketi pythonpath = .
AI with Rufat
Hər yerə kopyala-yapışdır edilmiş seçicilər

Əlli test, eyni seçicilər — birini dəyiş, hamısını redaktə et

# in test_login.py, and test_checkout.py, and test_profile.py …
page.get_by_label("Email").fill("[email protected]")
page.get_by_label("Password").fill("customer123")
page.get_by_test_id("login-submit").click()
💥Login düyməsinin data-testid-i dəyişəndə onu hər testdə ovlayırsan. Seçicilər bir yerə aiddir.
AI with Rufat
Bir sinif səhifənin seçicilərinə + əməliyyatlarına sahibdir
# pages/login_page.py
class LoginPage:
def __init__(self, page, base_url):
self.page, self.base_url = page, base_url
self.email = page.get_by_label("Email")
self.password = page.get_by_label("Password")
self.submit = page.get_by_test_id("login-submit")
def goto(self):
self.page.goto(f"{self.base_url}/auth/login")
return self
def login(self, email, pw):
self.email.fill(email)
self.password.fill(pw)
self.submit.click()
📦Lokatorlar __init__-də yaşayır; hər istifadəçi tapşırığı (login, search) bir metoddur. Seçici bir dəfə görünür.
🔗goto() kimi naviqasiyalardan self qaytar ki, çağırışlar zəncirlənə bilsin: LoginPage(...).goto().login(...).
AI with Rufat
Test ssenari kimi oxunur
Page object olmadan
page.get_by_label("Email").fill(…)
page.get_by_label("Password").fill(…)
page.get_by_test_id("login-submit").click()
LoginPage ilə
(
LoginPage(page, base_url)
.goto()
.login("[email protected]", "customer123")
)
📖Niyyət kimi oxunur — necə-si səhifə sinifində gizlədilib.
AI with Rufat
Page object-lər harada yaşayır
python-sdet/
├── pages/
│ ├── __init__.py
│ └── login_page.py
├── tests/
│ └── test_login.py
└── pytest.ini
# pytest.ini
[pytest]
testpaths = tests
pythonpath = .
🧭pythonpath = . (pytest ≥ 7) layihə kökünü sys.path-a qoyur ki, from pages… import … həll olunsun.
AI with Rufat
📦

Seçicilər
bir yerdə

Səhifə sinifləri necə-ni gizlədir, ona görə testlər ssenari kimi oxunur və yenidən dizaynlara tab gətirir

🧪
Məşq
Modul 6 login-ini bir LoginPage və bir ProductsPage-ə köçür
🔗
Zəncirlə
goto()-dan self qaytar ki, LoginPage(...).goto().login(...) təmiz oxunsun
➡️
Modul 8
Data-driven testlər — bir test gövdəsi, fayldan çoxlu hal
AI with Rufat
← / → · space