🎯 By ile Locator Yazma
By ile Locator Yazma: By locator'ı, bir kuryeye verdiğin adres tarifidir ve tarif türü teslimatın kaderini belirler: By.id "TC kimlik numarası" gibidir — sayfada tekil ve doğruda
By locator'ı, bir kuryeye verdiğin adres tarifidir ve tarif türü teslimatın kaderini belirler: By.id "TC kimlik numarası" gibidir — sayfada tekil ve doğrudandır, kapıyı ilk denemede bulur; By.cssSelector "mahalle + sokak + bina tarifi"dir — esnek ama sokak adı değişirse şaşırır; By.xpath ise "üçüncü binadan sola dön, kırmızı kapılı evin yanı" tarifidir — HER yeri tarif edebilir ama en kırılgandır, mahalleye yeni bir bina dikildiğinde (DOM'a yeni bir div eklendiğinde) yanlış kapıya gider. Peki madem By.xpath her elementi bulabiliyor, neden herkes sadece onu kullanmıyor — tek araç yetmez miydi? Yetmez, çünkü güç ile kırılganlık aynı eksendedir: pozisyona dayalı XPath (div[3]/span[2]) DOM'daki en küçük yapısal değişiklikte kırılır ve locator bakımı, UI otomasyon maliyetinin en büyük kalemidir. Java karşılaştırması: By sınıfı soyut bir factory'dir — By.id("x") çağrısı ById nesnesi döndürür; tıpkı List arayüzünün arkasında ArrayList/LinkedList seçmek gibi, hepsi aynı sözleşmeyi (findElement'e "beni nasıl arayacağını" söylemek) uygular ama performans/kırılganlık profilleri farklıdır. QA bağlamındaki gerçek maliyet: flaky locator'lar yüzünden ekip "testler yine kırmızı, boş ver" kültürüne kayar — test suite'ine güven kaybolduğunda otomasyonun tüm yatırımı çöpe döner. Locator önceliği (id > name > css > xpath) bu yüzden bir stil tercihi değil, bakım maliyeti stratejisidir.
🧭 8 By Stratejisi: Tek Tek
Micro Lab: Locator stratejisi kurma
TODO satirini beklenen cozumdeki kritik satirla degistir. Bu gercek runtime degil; amac dogru yapinin yazilmasini kontrollu olarak pekistirmek.
By Stratejisi Önceliği: Doğru Sırayla Dene
Varsa HER ZAMAN ilk tercih: By.id, sayfada tekil olması beklenen en güvenilir stratejidir.
Form alanlarında yaygındır (input, select) — id yoksa ikinci sıradaki tercih.
Anlamlı bir class var mı?
By.cssSelector: attribute, hiyerarşi ve durum bazlı arama yapabilir — id yoksa varsayılan tercih.
Hiçbiri yoksa: By.xpath
En güçlü strateji — metne göre arama ve eksen gezinmesi yapabilir — ama aynı zamanda en kırılganı.
Pozisyon bazlı XPath kullanma
/html/body/div[3] gibi mutlak yollar DOM'daki en küçük değişiklikte kırılır — mümkünse metin/attribute bazlı XPath tercih et.
LEGO ile Düşün: Locator Önceliği Merdiveni