Ответ
Да, неоднократно. Например, на последнем проекте по тестированию веб-приложения я с нуля написал фреймворк для UI-автотестов на Python с использованием Selenium WebDriver и Pytest.
Пример базового теста для проверки логина, написанного с чистого листа:
import pytest
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
class TestLogin:
@pytest.fixture(scope="function")
def driver(self):
# Инициализация драйвера с опциями
options = webdriver.ChromeOptions()
options.add_argument("--headless") # для CI
driver = webdriver.Chrome(options=options)
driver.implicitly_wait(10)
yield driver
driver.quit()
def test_successful_login(self, driver):
"""Проверка успешного входа с валидными данными."""
driver.get("https://app.example.com/login")
# Шаги тест-кейса, реализованные в коде
driver.find_element(By.ID, "username").send_keys("standard_user")
driver.find_element(By.ID, "password").send_keys("correct_password")
driver.find_element(By.CSS_SELECTOR, "button[type='submit']").click()
# Явное ожидание и проверка (assert)
welcome_message = WebDriverWait(driver, 10).until(
EC.presence_of_element_located((By.ID, "welcome-header"))
)
assert "Dashboard" in welcome_message.text
assert "/dashboard" in driver.current_url
Что это включает:
- Настройка окружения: Установка WebDriver, управление зависимостями через
requirements.txt(pytest, selenium, webdriver-manager). - Проектирование структуры: Организация Page Object Model (POM), вынесение локаторов и методов в отдельные классы.
- Написание поддерживаемого кода: Использование фикстур Pytest, явных ожиданий, понятных ассертов и логирования.
- Интеграция в CI/CD: Настройка скриптов для запуска в headless-режиме в Jenkins/GitLab CI.