97 lines
3.2 KiB
Python
97 lines
3.2 KiB
Python
"""Модуль страницы локации."""
|
||
|
||
from playwright.sync_api import Page
|
||
from components.toolbar_component import ToolbarComponent
|
||
from pages.base_page import BasePage
|
||
|
||
|
||
class LocationPage(BasePage):
|
||
"""Класс для работы со страницей локации."""
|
||
|
||
# Константы локаторов
|
||
TOOLBAR_BUTTONS_LOCATOR = (
|
||
"//div[contains(@class, 'layout class--')]"
|
||
"//span[@class='v-tooltip v-tooltip--bottom']//button"
|
||
)
|
||
|
||
# Индексы кнопок
|
||
CREATE_BUTTON_INDEX = 0 # Первая кнопка
|
||
EDIT_BUTTON_INDEX = 1 # Вторая кнопка
|
||
|
||
def __init__(self, page: Page) -> None:
|
||
"""
|
||
Инициализирует страницу локации.
|
||
|
||
Args:
|
||
page: Экземпляр страницы Playwright
|
||
"""
|
||
super().__init__(page)
|
||
|
||
# Инициализация тулбара
|
||
self.toolbar = ToolbarComponent(page, "")
|
||
|
||
# Кнопка "Создать" - первая кнопка
|
||
create_button_locator = self.page.locator(
|
||
self.TOOLBAR_BUTTONS_LOCATOR
|
||
).nth(self.CREATE_BUTTON_INDEX)
|
||
|
||
# Кнопка "Изменить" - вторая кнопка
|
||
edit_button_locator = self.page.locator(
|
||
self.TOOLBAR_BUTTONS_LOCATOR
|
||
).nth(self.EDIT_BUTTON_INDEX)
|
||
|
||
# Инициализация кнопок
|
||
self.toolbar.add_tooltip_button(create_button_locator, "create")
|
||
self.toolbar.add_tooltip_button(edit_button_locator, "edit")
|
||
|
||
self._create_child_frame = None
|
||
|
||
# Действия
|
||
def click_create_button(self) -> None:
|
||
"""
|
||
Кликает на кнопку 'Создать'.
|
||
|
||
Returns:
|
||
None
|
||
"""
|
||
# Используем метод тулбара для клика
|
||
self.toolbar.click_button("create")
|
||
self.wait_for_timeout(3000)
|
||
|
||
def click_edit_button(self) -> None:
|
||
"""
|
||
Кликает на кнопку 'Изменить'.
|
||
|
||
Returns:
|
||
None
|
||
"""
|
||
self.toolbar.click_button("edit")
|
||
self.wait_for_timeout(2000)
|
||
|
||
def wait_for_timeout(self, timeout: int) -> None:
|
||
"""
|
||
Ожидает указанное количество миллисекунд.
|
||
|
||
Args:
|
||
timeout: Время ожидания в миллисекундах
|
||
"""
|
||
self.page.wait_for_timeout(timeout)
|
||
|
||
# Проверки
|
||
def should_be_toolbar_buttons(self) -> None:
|
||
"""
|
||
Проверяет наличие и функциональность кнопок тулбара.
|
||
|
||
Raises:
|
||
AssertionError: Если кнопки недоступны или подсказки неверны.
|
||
"""
|
||
# Проверяем кнопку "Создать"
|
||
self.toolbar.check_button_visibility("create")
|
||
self.toolbar.check_button_tooltip("create", "Создать")
|
||
|
||
# Проверяем кнопку "Изменить"
|
||
self.toolbar.check_button_visibility("edit")
|
||
self.toolbar.check_button_tooltip("edit", "Изменить")
|
||
|
||
self.wait_for_timeout(2000)
|