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.2.tar.gz (31.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.2-py3-none-any.whl (4.0 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: puzzeluitest-0.1.2.tar.gz
  • Upload date:
  • Size: 31.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.2.tar.gz
Algorithm Hash digest
SHA256 58962d4e06854dd3ba0135093c1d461397f4a59d17737887c8eaa5d766046b3d
MD5 6acad216218ea4119cd59b852c3a783f
BLAKE2b-256 8d2ae2fc7ff76d0b32e3cfe6fe2a83342c014a0da5c66c16e32361f8b0223e7a

See more details on using hashes here.

File details

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

File metadata

  • Download URL: puzzeluitest-0.1.2-py3-none-any.whl
  • Upload date:
  • Size: 4.0 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.2-py3-none-any.whl
Algorithm Hash digest
SHA256 699eab857c32d62dc70d3d4cc35e4804036ab1e818fe7d3f79b13a12d92fbad8
MD5 55a24bcd5eee1f6494ca379deb3e60da
BLAKE2b-256 259740acdaa197132803dbee3b55e3908d3e9c764132be69065069fdb08675d2

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