🔍 Locator Stratejileri & Page Object Model

Locator Stratejileri & Page Object Model: Mobil element locator'larını bir şehir adres sistemi gibi düşünün: `resource-id` kapı numarası gibi çalışır — doğrudan ve benzersiz, "At

Mobil element locator'larını bir şehir adres sistemi gibi düşünün: `resource-id` kapı numarası gibi çalışır — doğrudan ve benzersiz, "Atatürk Bulvarı 42, Daire 3" gibi. `accessibility id` ise bina ismi gibi: "Merkez Postanesi" herkesçe bilinir ve platform değişse bile genellikle geçerli kalır. `xpath` ise "çarşıdan çıkıp sola dön, ikinci blokta kahvecinin yanındaki bina" tarifi gibi — her zaman bir yere ulaşırsınız ama yol tarifi uzun, kırılgan ve yavaş. Peki `By.id()` veya `By.cssSelector()` ile çalışmaya alışmış bir Selenium geliştiricisi neden `MobileBy.AccessibilityId()` öğrenmek zorunda? Çünkü native mobile UI'da HTML id veya CSS class yoktur — aksine accessibility tree node'ları, content-desc alanları ve UI hiyerarşisi üzerinden element tanımlanır; bu, Selenium'un web locator sistemiyle aynı kavramsal çerçevede ama tamamen farklı teknik gerçekliktir. Java'da `By.id("loginButton")` yazarken DOM'daki `id` attribute'unu hedefliyorsunuz; Appium'da `MobileBy.AccessibilityId("loginButton")` ise UIAutomator2'nin görünürlük ağacındaki `content-desc`'i hedefler. QA açısından kritik olan: xpath'e bağımlı testler, UI'daki en küçük hiyerarşi değişikliğinde (buton bir `LinearLayout`'un içine taşındı gibi) kırılır ve flaky test alarmlarıyla CI pipeline'ınız gürültüye boğulur.

Locator Stratejileri Karşılaştırması

Java — Tüm Locator Stratejileri

Java — AppiumBy ile Locator Örnekleri

Micro Lab: Kod yazma

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

7 Locator Stratejisi Neden Aynı Sınıfta Bir Arada Gösteriliyor?

AppiumBy.id(...) EN HIZLI ve GÜVENİLİR…

`AppiumBy.id(...)` EN HIZLI ve GÜVENİLİR yöntemdir — Android'in `resource-id`'sini DOĞRUDAN hedefler, tıpkı Selenium'daki `By.id()` gibi ama paket adı ÖNEKİYLE.

AppiumBy.accessibilityId(...) sadece…

`AppiumBy.accessibilityId(...)` sadece bir locator DEĞİLDİR — TalkBack/VoiceOver gibi erişilebilirlik araçlarının da KULLANDIĞI aynı `content-desc` alanını hedeflediği için, bu locator'ı kullanmak dolaylı yoldan erişilebilirlik TESTİ de yapar.

androidUIAutomator ile yazılan…

`androidUIAutomator` ile yazılan `UiSelector().scrollable(true)).scrollIntoView(...)` zinciri, Selenium'da OLMAYAN bir yetenektir — mobil ekranda görünmeyen bir elemana OTOMATİK kaydırarak ULAŞIR.

AppiumBy.xpath(...) yorum satırında "last…