Загрузка данных


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

driver = webdriver.Chrome()
wait = WebDriverWait(driver, 10)

try:
    driver.get("https://www.saucedemo.com/")

    # Логин
    username_field = wait.until(
        EC.visibility_of_element_located((By.ID, "user-name"))
    )
    password_field = driver.find_element(By.ID, "password")
    login_button = driver.find_element(By.ID, "login-button")

    username_field.send_keys("standard_user")
    password_field.send_keys("secret_sauce")
    login_button.click()

    # Проверка URL
    current_url = driver.current_url
    expected_path = "/inventory.html"
    assert expected_path in current_url, (
        f"Ошибка: ожидали URL с '{expected_path}', но получили '{current_url}'"
    )

    # Проверка наличия товаров
    items = wait.until(
        EC.presence_of_all_elements_located(
            (By.CLASS_NAME, "inventory_item")
        )
    )
    assert len(items) > 0, (
        f"Ошибка: не найдено ни одного товара. Найдено: {len(items)}"
    )

    # Проверка списка товаров и кнопок
    for number, item in enumerate(items, 1):
        name = item.find_element(
            By.CLASS_NAME, "inventory_item_name"
        ).text
        price = item.find_element(
            By.CLASS_NAME, "inventory_item_price"
        ).text
        add_button = item.find_element(
            By.CSS_SELECTOR, "button[id^='add-to-cart']"
        )

        assert add_button.is_displayed(), (
            f"Ошибка: кнопка добавления товара '{name}' не отображается"
        )

        print(f"{number}. {name} — {price}")

    # Добавление первого товара в корзину
    items[0].find_element(
        By.CSS_SELECTOR, "button[id^='add-to-cart']"
    ).click()

    # Проверка корзины
    cart_badge = wait.until(
        EC.visibility_of_element_located(
            (By.CLASS_NAME, "shopping_cart_badge")
        )
    )
    assert cart_badge.text == "1", (
        f"Ошибка: ожидали в корзине '1', получили '{cart_badge.text}'"
    )

    print("Все проверки пройдены.")

except AssertionError as e:
    print(f"Тест не пройден: {e}")

except Exception as e:
    print(f"Произошла непредвиденная ошибка: {e}")

finally:
    driver.quit()