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:
1. Implicit Wait
Section titled “1. Implicit Wait”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
NoSuchElementExceptionhatası fırlatılır. - Her
findElementçağrısında geçerlidir.
Örnek Kullanım
Section titled “Örnek Kullanım”driver.manage().timeouts().implicitlyWait(Duration.ofSeconds(10));WebElement element = driver.findElement(By.id("username"));Avantajları
Section titled “Avantajları”- Basit ve hızlı konfigürasyon.
- Küçük projelerde yeterli olabilir.
Dezavantajları
Section titled “Dezavantajları”- Tüm element aramalarına etki eder (global).
- Belirli koşulları bekleyemez (örneğin görünür olma veya tıklanabilir olma gibi).
2. Explicit Wait
Section titled “2. Explicit Wait”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.
Örnek Kullanım
Section titled “Örnek Kullanım”WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(15));WebElement element = wait.until(ExpectedConditions.visibilityOfElementLocated(By.id("login-button")));Avantajları
Section titled “Avantajları”- 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.
Dezavantajları
Section titled “Dezavantajları”- Kod satırlarını artırabilir.
- Her element için ayrı ayrı bekleme gerekebilir.
3. Karşılaştırma Tablosu
Section titled “3. Karşılaştırma Tablosu”| Özellik | Implicit Wait | Explicit Wait |
|---|---|---|
| Tanımlama Seviyesi | Global (WebDriver) | Yerel (Belirli element/koşul) |
| Kullanım Kolaylığı | Kolay | Orta |
| Koşul Desteği | Yok | Var (ExpectedConditions) |
| Performans Kontrolü | Az | Yüksek |
| Hata Yönetimi | Basit (NoSuchElementException) | Gelişmiş (TimeoutException) |
| Önerilen Kullanım Alanı | Basit testler | Karmaşık senaryolar, dinamik sayfalar |
4. Öneri
Section titled “4. Öneri”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.” 😄