⏳ Wait Stratejileri — Bekleme Yöntemleri
Wait Stratejileri — Bekleme Yöntemleri: Wait stratejisi, Java'da CompletableFuture üzerinde bloklu get(timeout, SECONDS) çağrısına benzer — ama hangi koşulu beklediğini sen belir
Wait stratejisi, Java'da CompletableFuture üzerinde bloklu get(timeout, SECONDS) çağrısına benzer — ama hangi koşulu beklediğini sen belirlersin. Thread.sleep(3000) ise tarihlenmiş bir Thread.sleep() kullanmak gibi: asıl sonuç 0.5 saniyede gelse de 3 saniye bekler; ya da 3 saniyede gelmezse yine hata verir. Peki ImplicitWait var zaten, neden ExplicitWait de kullanalım? Çünkü ImplicitWait tüm findElement çağrıları için tek bir timeout uygular — ama sayfadaki farklı elementlerin farklı hazır olma süreleri vardır; bir butonu 2 saniyede, bir API tablosunu 8 saniyede beklemek zorundasın. ExplicitWait + ExpectedConditions, her beklemeyi bir koşula (elementToBeClickable, visibilityOfElementLocated, textToBePresentInElement) bağlar; hem gereksiz bekleme süresini hem de premature exception'ı önler. QA için en tehlikeli seçenek Thread.sleep()'in CI pipeline'ına girmesidir: 50 test × ortalama 2 saniyelik sleep = 100 saniye saf israf, üstelik ağ gecikmesi arttığında hâlâ race condition'a düşürsün ve flaky test alırsın.
Wait Türleri Karşılaştırma
Wait Türleri — Zaman Çizelgesi Animasyonu
▶ Oynat'a bas: üç farklı wait stratejisinin aynı koşulda (element DOM'a giriyor) ne kadar farklı süre harcadığını canlı gör. Barlar gerçek zamanlama oranıyla dolar.
Sabit, koşulsuz bekleme. Test süresini gereksiz uzatır.
Implicit Wait (max 10s)
Global timeout. Başka elementler için yavaşlatıcı olabilir.
Explicit Wait (visibility koşulu)
En verimli yöntem. Sadece ihtiyaç duyulan noktada bekler.
Implicit Wait — Canlı Demo
Sol tarafta "Element Bul" butonlarına tıklayarak Implicit Wait'in etkisini canlı görün. Sağda zaman çizelgesi gerçek zamanlı güncellenir.
Explicit Wait — WebDriverWait Simülasyonu
"Veriyi Yükle" butonuna tıkla → Spinner görünür → WebDriverWait element'i bekler → #result DOM'a gelir → Test devam eder. Sağda DOM ağacı canlı değişir.
1. Implicit Wait — Global Bekleme