🎯 Locator Ustalığı (Sayfanın Kalbi)
Locator Ustalığı (Sayfanın Kalbi): Bu grup sayfanın KALBİDİR: A-G gruplarında öğrendiğin her şey (DOM, HTML, CSS, JS, frontend↔backend, React, Angular) burada TEK bir beceride bi
Bu grup sayfanın KALBİDİR: A-G gruplarında öğrendiğin her şey (DOM, HTML, CSS, JS, frontend↔backend, React, Angular) burada TEK bir beceride birleşir — herhangi bir elemente bakıp en dayanıklı locator'ı seçebilmek. Bu grubun 8 başlığı boyunca dayanıklılık hiyerarşisini, antipattern'leri, aynı elemente 5 locator düşünmeyi, koşullu/dinamik elementleri, liste satırlarını, shadow DOM/iframe'i, developer'dan ne isteneceğini ve locator code review'unu öğreneceksin.
🏆 H1. Locator Dayanıklılık Hiyerarşisi
Locator seçmek, bir kişiyi tarif etmek gibidir: onu "soldan üçüncü sıradaki, kırmızı tişörtlü kişi" diye tarif edersen (index + görünüm), sıra değişince veya kişi üstünü değiştirince tarifin çöker; ama "T.C. kimlik numarası şu olan kişi" dersen (data-testid), o kişi nereye otursa ne giyse bulunur. Locator dayanıklılık hiyerarşisi tam da budur: `data-testid` > `role`+`name` > stabil `id` > text > CSS > XPath-index (son çare). Neden hiyerarşi? Çünkü her katman bir sonrakinden daha az "tesadüfe" bağlıdır — data-testid kasıtlı bir kimliktir, XPath-index ise DOM'un o anki şekline dair kırılgan bir varsayım. Java analojisi: nesneyi kimliğe (id) göre mi yoksa geçici bir alana (renk/sıra) göre mi eşitliyorsun sorusudur. QA bağlamında: bu hiyerarşiyi içselleştiren tester her elemente 5 farklı locator düşünüp en dayanıklısını gerekçelendirebilir. Aşağıda **Locator Laboratuvarı** var: bir DOM parçasında attribute'lara tıkla, hangi locator neden daha sağlam gör.
Locator Laboratuvarı'ndaki BugCard DOM'una göre, en dayanıklıdan en kırılgana doğru hangi sıralama doğrudur?
class > id > data-testid > text
data-testid > role/id > text > class
text > class > data-testid > id
Hepsi eşit derecede güvenilir
data-testid en üsttedir (sadece test için, hiçbir şeyden etkilenmez), role/id ikinci sıradadır, text i18n'de kırılabilir, class (özellikle hash'li) en kırılgandır çünkü stil amaçlı var olur.
Neden "en dayanıklı" ile "en kısa yazılan" locator genelde AYNI şey değildir?
Her zaman aynıdırlar
Kısa yazım (ör. `.btn`) genelde stil amaçlı, paylaşımlı bir alana bağlanır; dayanıklılık ise KASITLI bir kimliğe bağlanmaktan gelir
Kısa locator'lar her zaman daha yavaştır
Uzun locator'lar her zaman daha güvenlidir