Урок 5. Ожидания в Selenium: как дождаться элементов

Иногда элементы появляются не сразу, а через несколько секунд после загрузки страницы. Если пытаться кликнуть слишком рано, возникнет ошибка. Решение — использовать ожидания.

time.sleep()

Простой способ — пауза. Но он неэффективен.

import time
time.sleep(5)

Явные ожидания (WebDriverWait)

Ожидание, пока элемент станет доступным:

from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from webdriver_manager.chrome import ChromeDriverManager
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By

# --- Настройка Selenium ---
options = webdriver.ChromeOptions()

try:
    driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()), options=options)
except Exception as e:
    print("Ошибка инициализации WebDriver:", e)
    raise SystemExit

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

Другие условия

  • presence_of_element_located — элемент появился в DOM.
  • visibility_of_element_located — элемент виден.
  • element_to_be_clickable — элемент кликабелен.
  • text_to_be_present_in_element — появился текст.

Неявные ожидания

Применяются ко всем действиям:

driver.implicitly_wait(5)

Итог

Ожидания — ключ к стабильным скриптам. Теперь ваши программы будут работать даже на «тяжёлых» сайтах. В следующих уроках мы начнём практику с реальными сайтами.

Больше уроков по парсингу на parsertools.ru/lessons.