📝 Задания: Page Object Model

← К оглавлению урока

Практические задания из лекции по saucedemo.com.

⚡ Задания кратко

  • Задание 1: Тесты инвентаря через TestInventory(BaseTest)
  • Задание 2: Сравнение цен 3 товаров (Inventory vs Cart)
  • Задание 3 (лекция): Перетаскивание фото в корзину на globalsqa.com через POM

Задание 1: TestInventory

Задание из лекции: написать тесты инвентаря в классе TestInventory с использованием POM.

Используя BaseTest и InventoryPage, напишите тесты:

  1. Авторизоваться как standard_user
  2. Проверить, что количество товаров на странице инвентаря равно 6
  3. Проверить, что все товары отображаются (is_displayed())
  4. Проверить, что названия всех товаров не пустые
  5. Проверить, что все названия начинаются с "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 должны совпадать с ценами в корзине.

Шаги:

  1. Открыть https://www.saucedemo.com/
  2. Авторизоваться как standard_user
  3. Проверить, что URL после входа равен https://www.saucedemo.com/inventory.html
  4. Запомнить цены следующих товаров на странице Inventory:
    • Sauce Labs Backpack
    • Sauce Labs Bike Light
    • Sauce Labs Bolt T-Shirt
  5. Вывести цены товаров в консоль (print())
  6. Добавить эти товары в корзину
  7. Перейти в корзину
  8. Запомнить цены товаров в корзине
  9. Сравнить цены в корзине с ценами из Inventory
  10. Закрыть браузер

Требования: использовать 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/

Шаги:

  1. Открыть страницу Drag & Drop Demo
  2. Захватить первую фотографию (верхний левый элемент)
  3. Перетащить её в область корзины (Trash)
  4. Проверить, что после перемещения:
    • В корзине появилась одна фотография
    • В основной области осталось 3 фотографии

Требования: создать pages/drag_and_drop_page.py с DragAndDropPage, использовать ActionChains.

Подсказка: страница содержит iframe. Перед работой с элементами нужно переключиться: driver.switch_to.frame(). Не забудьте вернуться: driver.switch_to.default_content().

→ Посмотреть решение