Sobes.tech
Middle

Selenium-ში რამდენიმე ელოდების ტიპი დაასახელეთ და ახსენით ისინი.

sobes.tech AI

პასუხი AI-სგან

  1. მიმლევი მოლოდინები (Implicit Waits)

    • ერთჯერადად კონფიგურირდება WebDriver-ის მთელი სესიის განმავლობაში.
    • WebDriver ელემენტის ძიებისას გამოიცდის განსაზღვრულ დროს, სანამ გამოიტანს NoSuchElementException გამონაკლისს.
    • მოლოდინის დრო ვრცელდება თითოეულ findElement(s) გამოძახებაზე.
    • თუ ელემენტი ადრე იპოვეს, WebDriver არ გააგრძელებს მოლოდინს.
  2. საპასუხო მოლოდინები (Explicit Waits)

    • გამოიყენება კონკრეტული პირობისთვის კონკრეტულ ელემენტზე.
    • WebDriver გამოიცდის მითითებულ პირობას განსაზღვრულ მაქსიმალურ დროს.
    • თუ პირობა ადრე შესრულდა, კოდი განაგრძობს მუშაობას.
    • თუ პირობა ვერ შესრულდა მაქსიმალურ დროს, გამოიცემა TimeoutException.
    • ჩვეულებრივ გამოიყენება WebDriverWait და ExpectedConditions კლასებთან ერთად.
    // მაგალითი საპასუხო მოლოდინის
    WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(10));
    WebElement element = wait.until(ExpectedConditions.elementToBeClickable(By.id("myButton")));
    
  3. მოძრავი მოლოდინები (Fluent Waits)

    • უფრო მოწინავე ვერსია საპასუხო მოლოდინების.
    • საშუალებას იძლევა განსაზღვრო არა მხოლოდ მაქსიმალური მოლოდინის დრო, არამედ:
      • პირობის შემოწმების ინტერვალი (polling interval).
      • გამონაკლისების ტიპები, რომლებიც უნდა იგნორირდეს მოლოდინის დროს.
    // მაგალითი მოძრაობის მოლოდინის
    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")));
    

შედარების სია:

მოლოდინის ტიპი გამოყენების სფერო მოქნილობა გამონაკლისების დამუშავება გამოყენება
მიმლევი მოლოდინები მთელი WebDriver სესია დაბალი (фиксირებული დრო) ავტომატური საერთო დრო მოლოდინისთვის ყველა ძიებისთვის
საპასუხო მოლოდინები კონკრეტული პირობა ელემენტისთვის მაღალი (შესაბამისი პირობა) ხელით (TimeoutException) სპეციფიკური მდგომარეობის ელემენტისთვის
მოძრავი მოლოდინები კონკრეტული პირობა ელემენტისთვის ძალიან მაღალი (ინტერვალი, იგნორირება) ხელით (TimeoutException) დეტალური მოლოდინის პარამეტრები