"""Модуль страницы локации."""
from playwright.sync_api import Page
from components.toolbar_component import ToolbarComponent
from components_derived.frames.create_child_element_frame import (
CreateChildElementFrame
)
from pages.base_page import BasePage
# =============== Локаторы ================================================
PANEL_HEADER = "//span[text()='Объекты']/following-sibling::i"
CREATE_BUTTON_ANCESTOR_DIV3 = "xpath=/ancestor::div[3]//button"
# =========================================================================
[документация]
class LocationPage(BasePage):
"""Класс для работы со страницей локации."""
[документация]
def __init__(self, page: Page) -> None:
"""
Инициализирует страницу локации.
Args:
page: Экземпляр страницы Playwright
"""
super().__init__(page)
# Инициализация тулбара
self.toolbar = ToolbarComponent(page, "")
panel_header_locator = self.page.locator(PANEL_HEADER)
# Кнопка "Создать" - первая кнопка в тулбаре
create_button_locator = panel_header_locator.locator(
CREATE_BUTTON_ANCESTOR_DIV3
).nth(0)
# Инициализация кнопки
self.toolbar.add_tooltip_button(create_button_locator, "create")
# Инициализация фреймов (ленивая загрузка)
self._create_child_frame = None
[документация]
def click_create_button(self) -> CreateChildElementFrame:
"""
Кликает на кнопку 'Создать' и возвращает фрейм создания.
Returns:
CreateChildElementFrame: Фрейм создания дочернего элемента
"""
# Используем метод тулбара для клика
self.toolbar.click_button("create")
self.wait_for_timeout(3000)
# Создаем и возвращаем фрейм
self._create_child_frame = CreateChildElementFrame(self.page)
return self._create_child_frame
[документация]
def is_create_button_visible(self) -> bool:
"""
Проверяет видимость кнопки 'Создать'.
Returns:
bool: True если кнопка видима
"""
button = self.toolbar.get_button_by_name("create")
if button is None:
return False
return button.is_present(timeout=5000) and button.locator.is_visible()
[документация]
def wait_for_timeout(self, timeout: int) -> None:
"""
Ожидает указанное количество миллисекунд.
Args:
timeout: Время ожидания в миллисекундах
"""
self.page.wait_for_timeout(timeout)