"""Модуль страницы локации.""" 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 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 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) def wait_for_timeout(self, timeout: int) -> None: """ Ожидает указанное количество миллисекунд. Args: timeout: Время ожидания в миллисекундах """ self.page.wait_for_timeout(timeout)