Skip to main content

Утилита для расширенного взаимодействия с любым веб-сайтом и его страницами

Project description

core_page

Библиотека для автоматической работы с любыми веб-страницами и их элементами на базе Selenium. Вдохновлена статьёй на Хабр и упрощает написание автоматических тестов с реализацией паттерна PageObject. Ускорьте написание кода, а также сделайте его лаконичнее, яснее и гибче.

Описание

Есть Selenium из коробки, который и предоставляет методы для работы со страницами. Зачем нужна эта библиотека? В процессе написания тестов, разработчик регулярно ищет элементы на странице, переходит на другие страницы, получает аттрибуты и т.д.. Все это, как правило, оборачивается в ожидания, чтобы избежать внезапных ошибок. Библиотека позволяет скрыть часть логики, а также комбинирует различные инструменты в отдельные методы. Благодаря этому, ускоряется написание тестов, их понимание и последующая поддержка.

Преимущества перед использованием Selenium из коробки:

  • Простое использование, путем наследования от базового класса в классы конкретных страниц.
  • Возможность установить настройки для теста, просто передав их в аргументах класса.
  • Базовые методы поиска элементов расширены и включают в себя явное ожидание.
  • Методы для получения аттрибутов у любого элемента. Просто передайте локатор.
  • Скачивание изображений и возможность их проверки.

Примеры использования

Например, на веб-сайте имеется главная страница, которая содержит различные элементы. Необходимо перейти на эту страницу и проверить наличие заголовка на странице и его содержимое (текст заголовка). В таком случае, создается класс MainPage в файле main_page.py и наследуется от базового класса BasePage.

# main_page.py

from e2e.core_page.base_page import BasePage


class MainPage(BasePage):
    def check_title(self):
        actual_title = self.find_element(locator).text
        assert actual_title == expected_title

Метод find_element() определён в базовом классе и используется для поиска элемента. Если элемент найден, то вызывается метод text для получения текста заголовка и проверяем его.

Далее, создаем файл test_main_page.py, где описываем тест-кейс для тестирования этого сценария, используя PyTest:

# test_main_page.py

from e2e.page_objects import MainPage


def test_main_page_title(driver):
    page = MainPage(driver=driver, url_suffix='', window_size=(1920, 1080))
    page.go_to_site()
    page.check_title()

Мы создаём экземпляр класса MainPage и передаём необходимые параметры. Далее, используем метод go_to_site() для перехода на страницу, определенную в базовом классе. После чего, мы вызываем метод класса MainPage, который выполняет необходимый сценарий тестирования.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

core_page-0.0.1.tar.gz (4.8 kB view hashes)

Uploaded Source

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page