🚨 Yaygın Hatalar

Yaygın Hatalar: Locator hatalarının çoğu, kaynak-DOM-render ayrımını bilmemekten doğar ve hep aynı birkaç kalıba oturur: element henüz render olmadan locate etmek (NoSuchElement)

Locator hatalarının çoğu, kaynak-DOM-render ayrımını bilmemekten doğar ve hep aynı birkaç kalıba oturur: element henüz render olmadan locate etmek (NoSuchElement), re-render sonrası ölmüş referansı kullanmak (StaleElement), hash class'a bağlanmak, `*ngIf`/conditional ile DOM'da OLMAYAN elementi bekleme yapmadan aramak, iframe/shadow DOM context'ini unutmak. Neden bir "hata sözlüğü"? Çünkü hatanın mesajını görünce kök nedenini anında tanıyabilen tester dakikalar içinde çözer; tanıyamayan saatlerce kör dener. Java analojisi: NullPointerException gördüğünde "hangi referans null?" diye düşünmek gibi — mesaj sana kök nedene giden yolu söyler. QA bağlamında: bu grup her hatayı Belirti → Kök Neden → Çözüm → Önleme formatında verir; her hata bu sayfada önceden gördüğün bir GRUP'a köprü kurar.

🎬 Stale Element: Bir Referans Nasıl Ölür?

Bir test, "Düzenle" butonunu bulup bir DEĞİŞKENDE saklıyor: `const editBtn = await driver.findElement(...)`. Bu filmde bu referansın, listeye yeni bir bug eklenince NASIL sessizce ÖLDÜĞÜNÜ izleyeceksin.

Adım 1 — Element bulunur ve referans TUTULUR: `editBtn` artık DOM'daki BELİRLİ bir node'u (o anki "Düzenle" butonunu) işaret eden bir referanstır.

Adım 2 — Başka bir eylem (ör. "Daha Fazla Yükle" tıklanır) bir RE-RENDER tetikler: React/Angular liste state'i değiştiği için bu alt ağacı YENİDEN OLUŞTURMAYA karar verir (GRUP F1/G1'deki reconciliation dersini hatırla).

Adım 3 — Eski node YOK EDİLİR, YENİ bir node kurulur: framework aynı butonu görsel olarak AYNI yerde çizse bile, altta YEPYENİ bir DOM node'u oluşturmuş olabilir — eski node artık belgede yer ALMIYOR.

Adım 4 — Tutulan referans artık bir HAYALETE işaret ediyor: `editBtn` hâlâ ESKİ node'a işaret eder ama o node artık belgeye BAĞLI değildir — "stale" (bayat) bir referanstır.

Final — `editBtn.click()` çağrılınca: `StaleElementReferenceException: element is not attached to the page document` fırlatılır. Doğru refleks: referansı ÖNCEDEN tutup SONRA kullanmak yerine, HER etkileşimden önce locator'ı YENİDEN sorgulamak (Playwright locator'ları bunu otomatik yapar, Selenium'da elle tekrar `findElement` çağrılmalıdır).

Adım Adım: Hata Mesajı Seni Nereye Yönlendiriyor?

Hiç hata yok ama sonuç yanlış

Test "yeşil" ama yanlış bug'ı işledi — şüphelen: index'e bağlı bir locator sıralama değişince sessizce yanlış elemente düştü mü (GRUP H2/H5)?

"0 elements matched" / NoSuchElement

Element hiç bulunamadı — element henüz DOM'a girmedi mi (timing, GRUP D3), koşul tetiklenmedi mi (GRUP F4/G3), yoksa selector yanlış mı yazılmış?

"not attached to the page document" / StaleElement