📝 Задания: Page Object Model
Практические задания из лекции по saucedemo.com.
⚡ Задания кратко
- Задание 1: Тесты инвентаря через
TestInventory(BaseTest) - Задание 2: Сравнение цен 3 товаров (Inventory vs Cart)
- Задание 3 (лекция): Перетаскивание фото в корзину на globalsqa.com через POM
Задание 1: TestInventory
Задание из лекции: написать тесты инвентаря в классе
TestInventory с использованием POM.
Используя BaseTest и InventoryPage, напишите тесты:
- Авторизоваться как
standard_user - Проверить, что количество товаров на странице инвентаря равно 6
- Проверить, что все товары отображаются (
is_displayed()) - Проверить, что названия всех товаров не пустые
- Проверить, что все названия начинаются с
"Sauce Labs"
Структура файлов:
saucedemo_tests/
├── pages/
│ ├── __init__.py
│ ├── base_page.py
│ ├── login_page.py
│ └── inventory_page.py
└── tests/
├── __init__.py
├── base_test.py
└── test_inventory.py ← ваш файл
Каркас решения:
# tests/test_inventory.py
from tests.base_test import BaseTest
class TestInventory(BaseTest):
def test_items_amount(self):
# ваш код
def test_all_items_are_displayed(self):
# ваш код
def test_all_items_names_are_displayed(self):
# ваш код
def test_all_item_names_are_not_empty(self):
# ваш код
def test_all_item_names_contains_sauce_labs(self):
# ваш код
Задание 2: Сравнение цен (из лекции)
Это главное задание из лекции: цены трёх товаров на странице Inventory должны совпадать с ценами в корзине.
Шаги:
- Открыть
https://www.saucedemo.com/ - Авторизоваться как
standard_user - Проверить, что URL после входа равен
https://www.saucedemo.com/inventory.html - Запомнить цены следующих товаров на странице Inventory:
- Sauce Labs Backpack
- Sauce Labs Bike Light
- Sauce Labs Bolt T-Shirt
- Вывести цены товаров в консоль (
print()) - Добавить эти товары в корзину
- Перейти в корзину
- Запомнить цены товаров в корзине
- Сравнить цены в корзине с ценами из Inventory
- Закрыть браузер
Требования: использовать POM, BaseTest, InventoryPage, CartPage.
# tests/test_prices.py
from tests.base_test import BaseTest
class TestAllItemsCost(BaseTest):
def test_all_items_cost_are_correct(self):
# 1. Открываем страницу и авторизуемся
# 2. Проверяем URL
# 3. Получаем цены трёх товаров
# 4. Выводим в консоль
# 5. Добавляем в корзину
# 6. Переходим в корзину
# 7. Получаем цены из корзины
# 8. Сравниваем
pass
Задание 3: Drag & Drop через POM (из лекции)
Задание из лекции на отдельном сайте: перетащить фотографию в корзину.
Сайт: https://www.globalsqa.com/demo-site/draganddrop/
Шаги:
- Открыть страницу Drag & Drop Demo
- Захватить первую фотографию (верхний левый элемент)
- Перетащить её в область корзины (Trash)
- Проверить, что после перемещения:
- В корзине появилась одна фотография
- В основной области осталось 3 фотографии
Требования: создать pages/drag_and_drop_page.py с DragAndDropPage, использовать ActionChains.
Подсказка: страница содержит iframe. Перед работой с элементами нужно переключиться:
driver.switch_to.frame(). Не забудьте вернуться: driver.switch_to.default_content().