Быстрый фреймворк для 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")
Принцип работы
-
Определение структуры страницы: Создаётся класс, наследующийся от
Auth, в котором указываетсяurlи определяются элементы страницы с соответствующими локаторами. -
Инициализация в тесте: В тестовой функции создаётся экземпляр класса страницы с передачей объекта
pageиз Playwright. -
Переход на страницу: Вызов метода
run_test()осуществляет переход по указанному URL. -
Взаимодействие с элементами: Для взаимодействия с элементами используются стандартные методы 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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
58962d4e06854dd3ba0135093c1d461397f4a59d17737887c8eaa5d766046b3d
|
|
| MD5 |
6acad216218ea4119cd59b852c3a783f
|
|
| BLAKE2b-256 |
8d2ae2fc7ff76d0b32e3cfe6fe2a83342c014a0da5c66c16e32361f8b0223e7a
|
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
699eab857c32d62dc70d3d4cc35e4804036ab1e818fe7d3f79b13a12d92fbad8
|
|
| MD5 |
55a24bcd5eee1f6494ca379deb3e60da
|
|
| BLAKE2b-256 |
259740acdaa197132803dbee3b55e3908d3e9c764132be69065069fdb08675d2
|