Locator-lar və auto-waiting
Playwright-ın locator prioriteti (rəsmi tövsiyə) — user-in gördüyü kimi:
getByRole('button', { name: 'Ödə' })— accessibility role + ad (ən davamlı)getByLabel('Email')— form sahələri üçüngetByPlaceholder,getByText— mətn əsaslıgetByTestId('checkout-btn')—data-testidatributu (dev-lərlə razılaşdırılmış)- CSS/XPath — SON çarə; struktur zəncirləri (
div > div:nth-child(3)) refactoring-də sınır
Auto-waiting: Playwright hər action-dan əvvəl elementin actionable olmasını (görünür, aktiv, stabil, tıklana bilən) özü gözləyir — sleep() yazmaq lazım deyil və YANLIŞDIR.
Strict mode: locator birdən çox elementə uyğun gəlsə, Playwright xəta atır — bu, gizli səhv seçimlərin qarşısını alır. Həll yolları: locator-u dəqiqləşdir, filter() istifadə et, və ya bilərəkdən çoxluqla işləyirsənsə first()/nth().
Zəncirlənmə və filter — mürəkkəb UI üçün: page.getByRole('row').filter({ hasText: 'Sifariş #42' }).getByRole('button', { name: 'Ləğv et' }).
İnterview-də "sleep niyə pisdir?" mütləq soruşulur: sabit gözləmə ya HƏDDƏN ARTIQ gözləyir (suite yavaşlayır), ya AZ gözləyir (flaky). Şərt əsaslı gözləmə (auto-wait, web-first assertion) lazım olan qədər — nə az, nə çox — gözləyir.
📚 Mənbələr və sənədlər
- Locator-larrəsmiplaywright.dev
- Actionabilityrəsmiplaywright.dev
Playwright-in hər action-dan əvvəl gözlədiyi şərtlərin rəsmi siyahısı.