Код IT
← Каталог

Проверка пользовательского сценария — Реализация сценария в коде

Фрагмент из «Проверка пользовательского сценария»: Реализация сценария в коде.

python projectencyclopedia7-05-testirovanie-1013 embed URL статья в энциклопедии
Python main.py
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from webdriver_manager.chrome import ChromeDriverManager

def run_e2e_scenario():
    driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()))
    
    try:
        # Шаг 1: Регистрация
        driver.get("file:///C:/path/to/index.html")
        
        name_field = driver.find_element(By.ID, "name")
        email_field = driver.find_element(By.ID, "email")
        password_field = driver.find_element(By.ID, "password")
        submit_button = driver.find_element(By.CSS_SELECTOR, "button[type='submit']")
        
        name_field.send_keys("TestUser")
        email_field.send_keys("testuser@example.com")
        password_field.send_keys("securepass")
        
        submit_button.click()
        
        # Ожидание сообщения об успехе
        success_msg = WebDriverWait(driver, 10).until(
            EC.visibility_of_element_located((By.ID, "successMessage"))
        )
        assert "Успешная регистрация" in success_msg.text
        
        # Шаг 2: после "успеха" форма должна очиститься (или скрыться)
        # ❌ Анти-паттерн: time.sleep(2) — флейк на медленной машине.
        # ✅ Явное ожидание: поле пустое или исчезло сообщение об успехе.
        WebDriverWait(driver, 10).until(
            lambda d: name_field.get_attribute("value") == ""
        )
        
        # Проверка очистки формы
        assert name_field.get_attribute("value") == ""
        assert email_field.get_attribute("value") == ""
        assert password_field.get_attribute("value") == ""
        
        print("Сценарий E2E завершен: регистрация прошла успешно, данные очищены.")
        
        # Добавление товара в корзину (симуляция)
        # Представим, что мы уже на странице магазина
        driver.get("file:///C:/path/to/cart.html") # Допустим, такой файл существует
        
        add_to_cart_btn = driver.find_element(By.CLASS_NAME, "add-to-cart-btn")
        add_to_cart_btn.click()
        
        confirmation = driver.find_element(By.CLASS_NAME, "cart-confirm")
        assert "Товар добавлен" in confirmation.text
        
        print("Товар добавлен в корзину успешно.")
        
    except Exception as e:
        print(f"Ошибка E2E сценария: {e}")
        # Сохранение скриншота для анализа
        driver.save_screenshot("e2e_error.png")
    finally:
        driver.quit()

if __name__ == "__main__":
    run_e2e_scenario()
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from webdriver_manager.chrome import ChromeDriverManager

def run_e2e_scenario():
    driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()))
    
    try:
        # Шаг 1: Регистрация
        driver.get("file:///C:/path/to/index.html")
        
        name_field = driver.find_element(By.ID, "name")
        email_field = driver.find_element(By.ID, "email")
        password_field = driver.find_element(By.ID, "password")
        submit_button = driver.find_element(By.CSS_SELECTOR, "button[type='submit']")
        
        name_field.send_keys("TestUser")
        email_field.send_keys("testuser@example.com")
        password_field.send_keys("securepass")
        
        submit_button.click()
        
        # Ожидание сообщения об успехе
        success_msg = WebDriverWait(driver, 10).until(
            EC.visibility_of_element_located((By.ID, "successMessage"))
        )
        assert "Успешная регистрация" in success_msg.text
        
        # Шаг 2: после "успеха" форма должна очиститься (или скрыться)
        # ❌ Анти-паттерн: time.sleep(2) — флейк на медленной машине.
        # ✅ Явное ожидание: поле пустое или исчезло сообщение об успехе.
        WebDriverWait(driver, 10).until(
            lambda d: name_field.get_attribute("value") == ""
        )
        
        # Проверка очистки формы
        assert name_field.get_attribute("value") == ""
        assert email_field.get_attribute("value") == ""
        assert password_field.get_attribute("value") == ""
        
        print("Сценарий E2E завершен: регистрация прошла успешно, данные очищены.")
        
        # Добавление товара в корзину (симуляция)
        # Представим, что мы уже на странице магазина
        driver.get("file:///C:/path/to/cart.html") # Допустим, такой файл существует
        
        add_to_cart_btn = driver.find_element(By.CLASS_NAME, "add-to-cart-btn")
        add_to_cart_btn.click()
        
        confirmation = driver.find_element(By.CLASS_NAME, "cart-confirm")
        assert "Товар добавлен" in confirmation.text
        
        print("Товар добавлен в корзину успешно.")
        
    except Exception as e:
        print(f"Ошибка E2E сценария: {e}")
        # Сохранение скриншота для анализа
        driver.save_screenshot("e2e_error.png")
    finally:
        driver.quit()

if __name__ == "__main__":
    run_e2e_scenario()