⚖️ Старый vs Новый — Selenium 3 → Selenium 4

🎯 Миграция устаревших паттернов

⚡ Главные отличия

  • Selenium 3: нужен executable_path= или webdriver-manager вручную.
  • Selenium 4: webdriver.Chrome() — Selenium Manager сам управляет драйвером.
  • Firefox в лекции использует executable_path=GeckoDriverManager().install() — это Selenium 3 стиль. В Selenium 4 — просто webdriver.Firefox().
Примеры из лекции (конспект Summary Session 2) написаны в стиле Selenium 3 с явным использованием webdriver-manager и Service. Ниже показано, что было в лекции и как это выглядит в современном Selenium 4.

1. Запуск Chrome

Из лекции (старое — Selenium 3 / webdriver-manager)

# Из конспекта Summary Session 2
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())
)

Современное (Selenium 4)

from selenium import webdriver

driver = webdriver.Chrome()  # Selenium Manager находит драйвер автоматически

Разница: в Selenium 4 встроен Selenium Manager — отдельная установка webdriver-manager и явный Service() больше не нужны. Selenium Manager сам определяет версию Chrome и скачивает подходящий ChromeDriver.

2. Запуск Firefox

Из лекции (старое)

# Из конспекта Summary Session 2
from selenium import webdriver
from selenium.webdriver.firefox.service import Service as FirefoxService
from webdriver_manager.firefox import GeckoDriverManager

driver = webdriver.Firefox(
    service=FirefoxService(GeckoDriverManager().install())
)

Современное (Selenium 4)

from selenium import webdriver

driver = webdriver.Firefox()  # Selenium Manager управляет GeckoDriver автоматически

3. Параметр executable_path (полностью устарел)

Из лекции (старое)

# Из конспекта Summary Session 2 — указание пути к драйверу напрямую
driver_path = "/Users/user/Downloads/chromedriver-mac-arm64/chromedriver"
service = Service(driver_path)
driver = webdriver.Chrome(service=service)

Ещё старее (Selenium 3 без Service)

# Selenium 3 — параметр executable_path устарён и удалён в Selenium 4
driver = webdriver.Chrome(executable_path="path/to/chromedriver")  # УСТАРЕЛО

Современное (Selenium 4)

# Не нужно указывать никакие пути
driver = webdriver.Chrome()  # Selenium Manager всё делает сам

4. Решение домашнего задания: Firefox в старом и новом стиле

Из лекции (старое)

# Из конспекта Summary Session 2 — решение ДЗ
from selenium import webdriver
from webdriver_manager.firefox import GeckoDriverManager

@pytest.fixture
def setup_browser():
    options = webdriver.FirefoxOptions()
    driver = webdriver.Firefox(
        executable_path=GeckoDriverManager().install(),  # УСТАРЕЛО
        options=options
    )
    yield driver
    driver.quit()

Современное (Selenium 4)

import pytest
from selenium import webdriver

@pytest.fixture
def setup_browser():
    options = webdriver.FirefoxOptions()
    driver = webdriver.Firefox(options=options)  # Selenium Manager управляет GeckoDriver
    driver.maximize_window()
    yield driver
    driver.quit()

Итоговая таблица

ПаттернSelenium 3 (из лекции)Selenium 4 (современный)
Запуск Chrome webdriver.Chrome(service=ChromeService(ChromeDriverManager().install())) webdriver.Chrome()
Запуск Firefox webdriver.Firefox(service=FirefoxService(GeckoDriverManager().install())) webdriver.Firefox()
Путь к драйверу executable_path="..." или Service(path) Не нужен — Selenium Manager
Управление драйвером Вручную через webdriver-manager Автоматически через Selenium Manager