🏠 Домашнее задание — Summary session 2

🎯 Самопроверка и практика
Важно: У урока 04 (Summary session 2) нет отдельного LMS-задания — это урок-повторение. Задание ниже — самопроверка на основе материала лекции и урока 03. Выполните его самостоятельно и проверьте через тесты.

Задание для самопроверки

Напишите скрипт, который повторяет домашнее задание из урока 03 в современном стиле Selenium 4:

  1. Открыть в браузере Firefox страницу https://itcareerhub.de/ru
  2. Перейти в раздел «Способы оплаты»
  3. Сделать скриншот этой секции страницы
  4. Оформить как pytest-тест с фикстурой
  5. Поместить код в git-репозиторий
Это то же задание, что было ДЗ 2 (урок 03), но теперь вы должны написать его самостоятельно, без подсказок из лекции, и использовать чистый Selenium 4 без устаревшего executable_path.

Подготовка окружения

1. Создать виртуальное окружение

# PowerShell
python -m venv venv
.\venv\Scripts\Activate.ps1

2. Установить зависимости

pip install selenium pytest

3. Установить Firefox

Убедитесь, что Firefox установлен на компьютере. Selenium Manager автоматически загрузит GeckoDriver.

4. Структура файлов

hw04/
├── conftest.py          # Фикстура для Firefox
├── test_payment.py      # Тест
└── screenshots/         # Папка для скриншотов (создастся автоматически)

Пошаговое решение

Шаг 1: Создать конфигурацию (conftest.py)

# hw04/conftest.py
import pytest
from selenium import webdriver

@pytest.fixture
def firefox_driver():
    """Фикстура: создаёт Firefox WebDriver и закрывает после теста."""
    options = webdriver.FirefoxOptions()
    driver = webdriver.Firefox(options=options)  # Selenium 4: Selenium Manager
    driver.maximize_window()
    yield driver
    driver.quit()

Логика: @pytest.fixture объявляет функцию фикстурой. yield driver передаёт объект в тест. Код после yield — teardown, выполняется после завершения теста в любом случае.

Шаг 2: Написать тест (test_payment.py)

# hw04/test_payment.py
import os
from selenium.webdriver.common.by import By
from time import sleep

def test_payment_methods_screenshot(firefox_driver):
    driver = firefox_driver

    # Шаг 1: Открыть страницу
    driver.get("https://itcareerhub.de/ru")
    sleep(3)  # Ждём загрузки (явные ожидания — урок 07)

    # Шаг 2: Перейти в раздел "Способы оплаты"
    payment_link = driver.find_element(By.LINK_TEXT, "Способы оплаты")
    payment_link.click()
    sleep(3)

    # Шаг 3: Найти секцию и сделать скриншот
    os.makedirs("screenshots", exist_ok=True)
    # Обновите By.ID, если ID элемента другой на реальной странице
    payment_section = driver.find_element(By.ID, "payment-methods")
    payment_section.screenshot("screenshots/payment_methods.png")

    assert os.path.exists("screenshots/payment_methods.png"), "Скриншот не сохранён"
⚠️ Проверить по документации: реальный ID или CSS-класс секции «Способы оплаты» на itcareerhub.de/ru нужно уточнить через DevTools браузера (F12 → Inspect Element).

Шаг 3: Запустить тест

# PowerShell, из папки hw04/
pytest test_payment.py -v

Шаг 4: Проверить результат

В папке screenshots/ должен появиться файл payment_methods.png. Откройте его — должна быть видна секция «Способы оплаты».

Проверка в VS Code

Запуск из терминала

# Активировать venv, если не активирован
.\venv\Scripts\Activate.ps1

# Запустить тесты
pytest test_payment.py -v

Отладка (F5)

Создайте файл .vscode/launch.json в корне проекта:

# .vscode/launch.json
{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "pytest: текущий файл",
            "type": "debugpy",
            "request": "launch",
            "module": "pytest",
            "args": ["${file}", "-v"],
            "console": "integratedTerminal",
            "justMyCode": false
        }
    ]
}

Откройте test_payment.py, поставьте точку останова (клик на поле слева от строки), нажмите F5.

Связь с теорией

Сдача задания

# Инициализировать репозиторий
git init
git add conftest.py test_payment.py
git commit -m "feat: homework 04 - payment section screenshot test"

# Запушить на GitHub
git remote add origin https://github.com/your-username/autoqa-hw04.git
git push -u origin main

Ссылку на репозиторий приложите в чат к преподавателю.