⚖️ Старый vs Новый: Selenium 3 → Selenium 4
Этот раздел показывает устаревший код из лекции и его современный эквивалент. В новых проектах используйте только «Современный (Selenium 4)» колонку.
⚡ Главные изменения: Selenium 3 → Selenium 4
- executable_path= удалён → используйте Service()
- find_element_by_id() и т.п. → find_element(By.ID, ...)
- Ручной chromedriver → Selenium Manager (авто)
- implicitly_wait — ещё работает, но WebDriverWait надёжнее
1. Инициализация драйвера
Из лекции (устарело — Selenium 3)
# ❌ executable_path удалён в Selenium 4
from selenium import webdriver
driver = webdriver.Chrome(
executable_path="path/to/chromedriver"
)
Selenium 3: нужно было вручную скачивать chromedriver, следить за версией Chrome.
Современное (Selenium 4)
# ✅ Selenium Manager — авто (Selenium 4.6+)
from selenium import webdriver
driver = webdriver.Chrome()
# Selenium Manager сам найдёт chromedriver
Selenium 4: Selenium Manager автоматически скачивает совместимый ChromeDriver.
2. Инициализация через Service (если нужен контроль над путём)
Из лекции (устарело)
# ❌ executable_path= — deprecated
from selenium import webdriver
driver = webdriver.Chrome(
executable_path="/path/to/chromedriver"
)
Современное (Selenium 4)
# ✅ Service + path
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
service = Service("C:/WebDrivers/chromedriver.exe")
driver = webdriver.Chrome(service=service)
3. webdriver-manager (явный менеджер загрузки)
В лекции использован webdriver-manager — сторонняя библиотека. Она по-прежнему работает и даёт явный контроль над версией драйвера.
Из лекции (старый синтаксис)
# ❌ executable_path с webdriver-manager
from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager
driver = webdriver.Chrome(
executable_path=ChromeDriverManager().install()
)
Современное (правильный синтаксис)
# ✅ Service + ChromeDriverManager
from selenium import webdriver
from selenium.webdriver.chrome.service import Service as ChromeService
from webdriver_manager.chrome import ChromeDriverManager
driver = webdriver.Chrome(
service=ChromeService(ChromeDriverManager().install())
)
4. Поиск элементов
Из лекции (устарело — Selenium 3)
# ❌ Методы find_element_by_* удалены
element = driver.find_element_by_id("myId")
element = driver.find_element_by_name("email")
element = driver.find_element_by_class_name("btn")
element = driver.find_element_by_tag_name("h1")
element = driver.find_element_by_link_text("О нас")
element = driver.find_element_by_css_selector(".nav a")
element = driver.find_element_by_xpath("//button")
Современное (Selenium 4)
# ✅ find_element(By.*, value)
from selenium.webdriver.common.by import By
element = driver.find_element(By.ID, "myId")
element = driver.find_element(By.NAME, "email")
element = driver.find_element(By.CLASS_NAME, "btn")
element = driver.find_element(By.TAG_NAME, "h1")
element = driver.find_element(By.LINK_TEXT, "О нас")
element = driver.find_element(By.CSS_SELECTOR, ".nav a")
element = driver.find_element(By.XPATH, "//button")
5. Ожидания
Из лекции (ненадёжно)
# ❌ sleep — не адаптируется к скорости сети
from time import sleep
sleep(50) # просто ждёт 50 секунд
# ❌ implicitly_wait — глобально, маскирует проблемы
driver.implicitly_wait(10)
Современное (рекомендуется)
# ✅ WebDriverWait — ждёт конкретного условия
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.LINK_TEXT, "О нас"))
)
6. Фикстура Firefox в лекции — исправление синтаксиса
В лекции (конспект) есть код фикстуры для Firefox с устаревшим executable_path:
Из лекции (устарело)
# ❌ executable_path — deprecated
driver = webdriver.Firefox(
executable_path=GeckoDriverManager().install(),
options=options
)
Современное (Selenium 4)
# ✅ Service + GeckoDriverManager
from selenium.webdriver.firefox.service import Service as FirefoxService
from webdriver_manager.firefox import GeckoDriverManager
driver = webdriver.Firefox(
service=FirefoxService(GeckoDriverManager().install())
)
Сводная таблица изменений
| Что изменилось | Selenium 3 (устарело) | Selenium 4 (актуально) |
|---|---|---|
| Инициализация драйвера | executable_path= |
Service() или Selenium Manager |
| Поиск элементов | find_element_by_id() и т.п. |
find_element(By.ID, ...) |
| Менеджер драйверов | Ручная загрузка или webdriver-manager |
Selenium Manager (встроен) |
| Ожидания | sleep(), implicitly_wait() |
WebDriverWait + expected_conditions |
| Закрытие браузера | driver.close() |
driver.quit() (закрывает всё) |