83 lines
2.9 KiB
Python
83 lines
2.9 KiB
Python
"""Модуль страницы локации."""
|
||
|
||
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) |