🏠 Домашнее задание — Summary session 2
Важно: У урока 04 (Summary session 2) нет отдельного LMS-задания — это урок-повторение. Задание ниже — самопроверка на основе материала лекции и урока 03. Выполните его самостоятельно и проверьте через тесты.
Задание для самопроверки
Напишите скрипт, который повторяет домашнее задание из урока 03 в современном стиле Selenium 4:
- Открыть в браузере Firefox страницу
https://itcareerhub.de/ru - Перейти в раздел «Способы оплаты»
- Сделать скриншот этой секции страницы
- Оформить как pytest-тест с фикстурой
- Поместить код в 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.
Связь с теорией
- Фикстура: theory.html#fixture
- Метод click(): theory.html#click
- Скриншот: theory.html#screenshot
- Пример в коде: examples.html — Пример 6
Сдача задания
# Инициализировать репозиторий
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
Ссылку на репозиторий приложите в чат к преподавателю.