В Чём Различие Между ‘Implicit wait’ и ‘Explicit wait’?

🔹 Implicit Wait (Неявное ожидание)

  • Устанавливается один раз для всего драйвера.

  • Говорит Selenium: «ждать до X секунд, пока элемент не появится на странице».

  • Если элемент найден быстрее — ожидание прекращается сразу.

  • Применяется ко всем элементам.

Пример (Python):

from selenium import webdriver

driver = webdriver.Chrome()
driver.implicitly_wait(10)  # ждать до 10 секунд для всех find_element
driver.get("https://example.com")

element = driver.find_element("id", "username")  # будет ждать максимум 10 сек

🔹 Explicit Wait (Явное ожидание)

  • Настраивается для конкретного элемента или условия.

  • Использует WebDriverWait + expected_conditions.

  • Можно ожидать не только появления элемента, но и:

    • его кликабельности,

    • исчезновения,

    • наличия текста,

    • и других условий.

Пример:

from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

wait = WebDriverWait(driver, 10)
element = wait.until(EC.element_to_be_clickable((By.ID, "login-btn")))
element.click()

📌 Основные различия

Критерий
Implicit Wait
Explicit Wait

Область действия

Все элементы

Конкретный элемент/условие

Гибкость

Только поиск элемента

Разные условия (клик, текст, исчезновение)

Настройка

Один раз на драйвер

Каждый раз отдельно

Использование вместе

Можно, но не рекомендуется (могут быть конфликты)


👉 Простыми словами:

  • Implicit wait — глобальное «подождать чуть-чуть при каждом поиске элемента».

  • Explicit wait — «подождать именно для этого элемента, пока он будет готов».

Last updated

Was this helpful?