Урок 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.
