🎯 Locator Stratejileri

Locator Stratejileri: Locator, sayfadaki bir elementi tarif etmenin yöntemidir — ama sıradan bir adres değil, kütüphane kataloğundaki ISBN numarası gibi: kitabın kapağı değişse,

Locator, sayfadaki bir elementi tarif etmenin yöntemidir — ama sıradan bir adres değil, kütüphane kataloğundaki ISBN numarası gibi: kitabın kapağı değişse, rafı değişse, hatta kütüphane taşınsa bile ISBN aynı kitabı bulur çünkü içeriğe değil, kimliğe atıfta bulunur. Peki XPath veya CSS selector varken neden role/text/testid önerilir? XPath ve CSS selector, görsel konuma veya DOM hiyerarşisine bağlıdır — geliştirici bir div'i span ile değiştirirse veya bir wrapper katmanı eklerse locator bozulur ve test production'daki gerçek kullanıcı davranışını değil, markup detaylarını test etmiş olur. Java'da Selenium ile By.xpath("//div[3]/span[2]/input") yazdıysan ve frontend ekibi sayfayı yeniden düzenlediyse, fonksiyonel hiçbir şey değişmemesine rağmen testler kırmızı yandı — bu "brittle test" sorunudur. Playwright'ın getByRole("button", {name:"Satın Al"}) stratejisi ise ekran okuyucunun gördüğü arayüzü hedefler: hem engelliler için erişilebilirlik testini otomatik kapsar hem de DOM değişikliklerine karşı doğal dayanıklılık sağlar. QA gerçeği: data-testid atributları eksikse geliştirici ekibiyle konuşarak test edilebilirliği (testability) tasarım aşamasında planlamak, test sürdürülebilirliğini en ucuz adımda çözmenin yoludur.

Locator Türleri — Selenium vs Playwright

Playwright'a Özgü Locator'lar (Selenium'da yok)

Micro Lab: Playwright — Locator secimi

TODO satirini beklenen cozumdeki kritik satirla degistir. Bu gercek runtime degil; amac dogru yapinin yazilmasini kontrollu olarak pekistirmek.

Adim Adim: Playwright — Locator secimi

Once getByRole, getByLabel, getByPlaceholder gibi semantic locator dene

Semantic bulamazsan getByText veya getByTestId kullan

CSS/XPath gerekiyorsa page.locator("css") veya page.locator("xpath=...") yaz

await expect(locator).toBeVisible() ile locatorin calistigini dogrula

Birden fazla element eslesiryorsa .first() / .nth() / .filter() ile daralt

Playwright locator secimi ve dogrulama sirasi nedir?

Locator Öncelik Sırası (Playwright Resmi Tavsiyesi)

1. getByRole → 2. getByLabel → 3. getByPlaceholder → 4. getByText → 5. getByTestId → 6. CSS/XPath. XPath'ı son çare kullan — sayfa yapısı değişince kırılır.