💻 Примеры — Selenium WebDriver

🎯 Повторение урока 03

⚡ Минимальный рабочий пример

# open_site.py
from selenium import webdriver

driver = webdriver.Chrome()
driver.get("https://itcareerhub.de/ru")
driver.quit()

Фикстура: @pytest.fixture + yield driver + driver.quit()

Пример 1: Запуск Chrome и переход на сайт (Selenium 4)

Современный способ — Selenium Manager управляет ChromeDriver автоматически.

# subjects/auto-qa/examples/lesson04/01_launch_chrome.py
from selenium import webdriver

driver = webdriver.Chrome()          # Selenium Manager сам найдёт драйвер
driver.get("https://itcareerhub.de/ru")
print("Заголовок страницы:", driver.title)
driver.quit()

Пример 2: Навигация — back, forward, refresh

# subjects/auto-qa/examples/lesson04/02_navigation.py
from selenium import webdriver
from time import sleep

driver = webdriver.Chrome()

driver.get("https://itcareerhub.de/ru/")
sleep(2)

driver.get("https://www.berlin.de")
sleep(2)

driver.back()          # Возвращаемся на itcareerhub.de/ru
sleep(2)
print("После back:", driver.current_url)

driver.forward()       # Снова на berlin.de
sleep(2)
print("После forward:", driver.current_url)

driver.refresh()       # Обновить текущую страницу
sleep(2)

driver.quit()

Пример 3: Управление окном и скриншот

# subjects/auto-qa/examples/lesson04/03_window_screenshot.py
from selenium import webdriver
from time import sleep
import os

driver = webdriver.Chrome()

driver.get("https://itcareerhub.de/ru/")
driver.get("https://www.berlin.de/")
driver.set_window_size(640, 460)        # Эмулируем мобильное окно
sleep(3)

# Скриншот сохраняется в текущую папку скрипта
driver.save_screenshot("./berlin_screenshot.png")
print("Скриншот сохранён в:", os.getcwd())

driver.maximize_window()
sleep(1)
driver.quit()

Пример 4: Метод click() — клик по ссылке

# subjects/auto-qa/examples/lesson04/04_click.py
from selenium import webdriver
from selenium.webdriver.common.by import By
from time import sleep

driver = webdriver.Chrome()

try:
    driver.get("https://itcareerhub.de/ru")
    sleep(3)                              # Ждём загрузки страницы

    about_link = driver.find_element(By.LINK_TEXT, "О нас")
    about_link.click()

    sleep(3)
    print("Текущий URL после клика:", driver.current_url)
finally:
    driver.quit()

Пример 5: Фикстура pytest для WebDriver

# subjects/auto-qa/examples/lesson04/conftest.py
import pytest
from selenium import webdriver

@pytest.fixture
def driver():
    """Фикстура: создаёт Chrome WebDriver и закрывает его после теста."""
    driver = webdriver.Chrome()
    driver.maximize_window()
    yield driver       # Передаём в тест
    driver.quit()      # Teardown: выполняется после теста в любом случае
# subjects/auto-qa/examples/lesson04/test_basic.py
import pytest
from selenium.webdriver.common.by import By

def test_google_title(driver):
    """Проверяем, что заголовок Google содержит 'Google'."""
    driver.get("https://www.google.com")
    assert "Google" in driver.title

def test_example_heading(driver):
    """Проверяем заголовок страницы example.com."""
    driver.get("https://www.example.com")
    heading = driver.find_element(By.TAG_NAME, "h1").text
    assert heading == "Example Domain"
# Запуск тестов (PowerShell)
pytest subjects/auto-qa/examples/lesson04/test_basic.py -v

Пример 6: Разбор ДЗ — Firefox, скриншот секции

Источник: разбор домашнего задания из лекции Summary Session 2.

# subjects/auto-qa/examples/lesson04/conftest_firefox.py
import pytest
from selenium import webdriver

@pytest.fixture
def setup_browser():
    """Фикстура для Firefox."""
    options = webdriver.FirefoxOptions()
    driver = webdriver.Firefox(options=options)  # Selenium Manager управляет GeckoDriver
    driver.maximize_window()
    yield driver
    driver.quit()
# subjects/auto-qa/examples/lesson04/test_payment_methods.py
from selenium.webdriver.common.by import By
from time import sleep

def test_payment_methods_section(setup_browser):
    driver = setup_browser

    # Шаг 1: открыть страницу
    driver.get("https://itcareerhub.de/ru")
    sleep(3)

    # Шаг 2: найти и кликнуть ссылку "Способы оплаты"
    payment_link = driver.find_element(By.LINK_TEXT, "Способы оплаты")
    payment_link.click()
    sleep(3)

    # Шаг 3: найти секцию и сделать скриншот элемента
    # Обновите By.ID, если ID элемента другой на реальной странице
    payment_section = driver.find_element(By.ID, "payment-methods")
    payment_section.screenshot("payment_methods_section.png")
    print("Скриншот секции сохранён: payment_methods_section.png")
⚠️ Проверить по документации: атрибут ID секции «Способы оплаты» на itcareerhub.de/ru может отличаться от "payment-methods". Проверьте реальный HTML через DevTools (F12).