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()