Middle
Selenium-ში რამდენიმე ელოდების ტიპი დაასახელეთ და ახსენით ისინი.
sobes.tech AI
პასუხი AI-სგან
-
მიმლევი მოლოდინები (Implicit Waits)
- ერთჯერადად კონფიგურირდება WebDriver-ის მთელი სესიის განმავლობაში.
- WebDriver ელემენტის ძიებისას გამოიცდის განსაზღვრულ დროს, სანამ გამოიტანს
NoSuchElementExceptionგამონაკლისს. - მოლოდინის დრო ვრცელდება თითოეულ
findElement(s)გამოძახებაზე. - თუ ელემენტი ადრე იპოვეს, WebDriver არ გააგრძელებს მოლოდინს.
-
საპასუხო მოლოდინები (Explicit Waits)
- გამოიყენება კონკრეტული პირობისთვის კონკრეტულ ელემენტზე.
- WebDriver გამოიცდის მითითებულ პირობას განსაზღვრულ მაქსიმალურ დროს.
- თუ პირობა ადრე შესრულდა, კოდი განაგრძობს მუშაობას.
- თუ პირობა ვერ შესრულდა მაქსიმალურ დროს, გამოიცემა
TimeoutException. - ჩვეულებრივ გამოიყენება
WebDriverWaitდაExpectedConditionsკლასებთან ერთად.
// მაგალითი საპასუხო მოლოდინის WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(10)); WebElement element = wait.until(ExpectedConditions.elementToBeClickable(By.id("myButton"))); -
მოძრავი მოლოდინები (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) |
დეტალური მოლოდინის პარამეტრები |