İçeriğe geç

Implicit vs Explicit Waits

Selenium test otomasyonunda bekleme (wait) mekanizmaları, web sayfasındaki elementlerin yüklenmesini bekleyerek testlerin stabil çalışmasını sağlar. Aksi halde, henüz yüklenmemiş bir element üzerinde işlem yapılmaya çalışıldığında hata alınabilir.

Bu noktada Selenium iki temel bekleme türü sunar:

Implicit Wait, WebDriver seviyesinde tanımlanır ve global olarak tüm element aramalarında geçerlidir.

  • WebDriver, belirtilen süre boyunca DOM’da ilgili elementi aramaya devam eder.
  • Süre sonunda element bulunamazsa NoSuchElementException hatası fırlatılır.
  • Her findElement çağrısında geçerlidir.
driver.manage().timeouts().implicitlyWait(Duration.ofSeconds(10));
WebElement element = driver.findElement(By.id("username"));
  • Basit ve hızlı konfigürasyon.
  • Küçük projelerde yeterli olabilir.
  • Tüm element aramalarına etki eder (global).
  • Belirli koşulları bekleyemez (örneğin görünür olma veya tıklanabilir olma gibi).

Explicit Wait, belirli bir koşulun (condition) gerçekleşmesini beklemek için kullanılır.
Sadece belirli element(ler) veya koşul(lar) için geçerlidir.

WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(15));
WebElement element = wait.until(ExpectedConditions.visibilityOfElementLocated(By.id("login-button")));
  • Sadece gerekli durumlarda bekleme yapılır.
  • Belirli koşullara göre bekleme (örneğin: elementToBeClickable, presenceOfElementLocated, alertIsPresent).
  • Daha esnek ve kontrollü test senaryoları sağlar.
  • Kod satırlarını artırabilir.
  • Her element için ayrı ayrı bekleme gerekebilir.

ÖzellikImplicit WaitExplicit Wait
Tanımlama SeviyesiGlobal (WebDriver)Yerel (Belirli element/koşul)
Kullanım KolaylığıKolayOrta
Koşul DesteğiYokVar (ExpectedConditions)
Performans KontrolüAzYüksek
Hata YönetimiBasit (NoSuchElementException)Gelişmiş (TimeoutException)
Önerilen Kullanım AlanıBasit testlerKarmaşık senaryolar, dinamik sayfalar

En iyi uygulama:
Implicit Wait genellikle temel bekleme için kullanılır.
Ancak dinamik içeriklerde, Explicit Wait tercih edilmelidir.
İki bekleme türünü birlikte kullanmak önerilmez, çünkü çakışmalar testlerin dengesiz çalışmasına yol açabilir.


Selenium’da doğru bekleme stratejisini seçmek, testlerin güvenilirliğini ve hızını doğrudan etkiler.

  • Implicit Wait: Basit ve genel bekleme.
  • Explicit Wait: Koşula bağlı, kontrollü bekleme.

🔍 Kısa Özet:
“Implicit bekler, Explicit sabreder.” 😄