Skip to main content

Быстрый фреймворк для UI-тестирования на WebSocker

Project description

Документация библиотеки для тестирования веб-страниц

Общее описание

Библиотека предоставляет базовые классы для описания структуры веб-страницы и взаимодействия с её элементами при написании тестов с использованием Playwright.

Установка

pip install your-library-name

Основные компоненты

Класс Auth

Базовый класс для описания страницы авторизации или любой другой веб-страницы.

Атрибуты:

Атрибут Тип Описание
url str URL страницы (должен быть указан в дочернем классе)

Методы:

Метод Параметры Описание
__init__ page: Page Принимает объект страницы Playwright
run_test - Выполняет переход на указанный URL

Класс Object

Базовый класс для всех элементов страницы.

Атрибуты:

Атрибут Тип Описание
locator str CSS-селектор или другой локатор элемента

Класс InputObject

Базовый класс для полей ввода.

Атрибуты:

Атрибут Тип Описание
locator str Локатор элемента
type Literal["login", "password", "email"] Тип поля ввода

Класс Input

Класс для описания поля ввода (наследуется от InputObject).

Класс Button

Класс для описания кнопки.

Класс Link

Класс для описания ссылки.

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

Определение страниц

from playwright.sync_api import Page
from your_library import Auth, Input, Button, Link

class LoginPage(Auth):
    url = "https://example.com/login"
    
    # Поля ввода
    username_input = Input("#username", type="login")
    password_input = Input("#password", type="password")
    email_input = Input("#email", type="email")
    
    # Кнопки
    submit_button = Button("#submit")
    register_button = Button("#register")
    
    # Ссылки
    forgot_password_link = Link("#forgot-password")
    registration_link = Link("#go-to-registration")

class ProfilePage(Auth):
    url = "https://example.com/profile"
    
    # Поля профиля
    first_name_input = Input("#first-name", type="login")
    last_name_input = Input("#last-name", type="login")
    email_input = Input("#profile-email", type="email")
    
    # Кнопки действий
    save_button = Button("#save")
    cancel_button = Button("#cancel")
    logout_button = Button("#logout")
    
    # Ссылки
    settings_link = Link("#settings")
    help_link = Link("#help")

Написание тестов

from playwright.sync_api import Page

def test_login(page: Page):
    # Создание экземпляра страницы и переход по URL
    login_page = LoginPage(page)
    login_page.run_test()
    
    # Взаимодействие с элементами страницы
    page.fill(login_page.username_input.locator, "test_user")
    page.fill(login_page.password_input.locator, "password123")
    page.click(login_page.submit_button.locator)
    
    # Проверка результатов
    assert page.url == "https://example.com/profile"

def test_registration_flow(page: Page):
    # Переход на страницу регистрации
    login_page = LoginPage(page)
    login_page.run_test()
    
    # Клик по ссылке регистрации
    page.click(login_page.registration_link.locator)
    
    # Заполнение формы регистрации (предполагаем наличие страницы RegistrationPage)
    assert page.url == "https://example.com/register"
    
def test_profile_update(page: Page):
    # Авторизация и переход в профиль
    profile_page = ProfilePage(page)
    profile_page.run_test()
    
    # Обновление данных профиля
    page.fill(profile_page.first_name_input.locator, "New Name")
    page.fill(profile_page.last_name_input.locator, "New Last Name")
    page.click(profile_page.save_button.locator)
    
    # Проверка сохранения
    assert page.is_visible(".success-message")

Принцип работы

  1. Определение структуры страницы: Создаётся класс, наследующийся от Auth, в котором указывается url и определяются элементы страницы с соответствующими локаторами.

  2. Инициализация в тесте: В тестовой функции создаётся экземпляр класса страницы с передачей объекта page из Playwright.

  3. Переход на страницу: Вызов метода run_test() осуществляет переход по указанному URL.

  4. Взаимодействие с элементами: Для взаимодействия с элементами используются стандартные методы Playwright, а локаторы берутся из определённых в классе атрибутов.

Расширение библиотеки

Вы можете создавать собственные классы элементов, наследуясь от базовых классов:

from your_library import Object

class Checkbox(Object):
    def __init__(self, locator: str, checked_by_default: bool = False):
        super().__init__(locator)
        self.checked_by_default = checked_by_default

class Dropdown(Object):
    def __init__(self, locator: str, options: list):
        super().__init__(locator)
        self.options = options

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

puzzeluitest-0.1.3.tar.gz (22.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

puzzeluitest-0.1.3-py3-none-any.whl (7.2 kB view details)

Uploaded Python 3

File details

Details for the file puzzeluitest-0.1.3.tar.gz.

File metadata

  • Download URL: puzzeluitest-0.1.3.tar.gz
  • Upload date:
  • Size: 22.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.12

File hashes

Hashes for puzzeluitest-0.1.3.tar.gz
Algorithm Hash digest
SHA256 3a83ef7b9fc23d988e046da8b130ae0a599b3be061f874180064f1f0193da470
MD5 2b8321d6fe79dae5bc28b7950f5e5028
BLAKE2b-256 7c29a830c29e6dd010cca85374301824f190fdb778833b4ef5e789141564ece6

See more details on using hashes here.

File details

Details for the file puzzeluitest-0.1.3-py3-none-any.whl.

File metadata

  • Download URL: puzzeluitest-0.1.3-py3-none-any.whl
  • Upload date:
  • Size: 7.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.12

File hashes

Hashes for puzzeluitest-0.1.3-py3-none-any.whl
Algorithm Hash digest
SHA256 cedc12e6c9712276909d0163c008544946abbb2190fba131f46059a7744be478
MD5 f1542227858ceeda9c14fef9e720c765
BLAKE2b-256 724d5e4f99c7ffc9eb82516503bac99e5280c5f136dec94dfe0e7dc42f352e2d

See more details on using hashes here.

Supported by

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