Sobes.tech
Middle

Selenium'da birkaç bekleme türünü adlandırın ve açıklayın.

sobes.tech yapay zeka

AI'dan gelen yanıt

  1. İçsel Beklemeler (Implicit Waits)

    • WebDriver oturumu boyunca bir kez yapılandırılır.
    • WebDriver, bir öğe aranırken NoSuchElementException istisnasını atmadan önce belirli bir süre bekler.
    • Bekleme süresi, her findElement(s) çağrısına uygulanır.
    • Eğer öğe daha erken bulunursa, WebDriver sona kadar beklemez.
  2. Açık Beklemeler (Explicit Waits)

    • Belirli bir öğe için belirli bir koşula uygulanır.
    • WebDriver, belirli bir maksimum süre içinde koşulun yerine getirilmesini bekler.
    • Koşul daha erken yerine getirilirse, kod devam eder.
    • Koşul maksimum sürede yerine getirilmezse, TimeoutException istisnası atılır.
    • Genellikle WebDriverWait ve ExpectedConditions ile kullanılır.
    // Açık Bekleme örneği
    WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(10));
    WebElement element = wait.until(ExpectedConditions.elementToBeClickable(By.id("myButton")));
    
  3. Akış Beklemeleri (Fluent Waits)

    • Açık Beklemelerin daha gelişmiş bir versiyonudur.
    • Sadece maksimum bekleme süresini değil, aynı zamanda:
      • Koşulun kontrol edilme sıklığını (polling interval).
      • Bekleme sırasında yoksayılacak istisnaları belirlemeye izin verir.
    // Akış Beklemesi örneği
    Wait<WebDriver> wait = new FluentWait<>(driver)
            .withTimeout(Duration.ofSeconds(30))
            .pollingEvery(Duration.ofSeconds(5))
            .ignoring(NoSuchElementException.class);
    
    WebElement element = wait.until(driver -> driver.findElement(By.id("myElement")));
    

Özet tablo:

Bekleme Türü Uygulama Alanı Esneklik İstisna İşleme Kullanım
İçsel Bekleme Tüm WebDriver oturumu Düşük (sabit zaman) Otomatik Tüm aramalar için genel bekleme süresi
Açık Bekleme Belirli bir öğe için koşul Yüksek (tanımlı koşul) Manuel (TimeoutException) Öğenin belirli bir durumunu bekleme
Akış Beklemesi Belirli bir öğe için koşul Çok yüksek (intervall, yoksay) Manuel (TimeoutException) Daha ince ayar yapılmış bekleme