"""Модуль modal_view_template содержит класс для работы с модальным окном шаблона. Класс ViewTemplateModalWindow наследует базовый функционал ModalWindowComponent и реализует методы просмотра модального окна шаблона. """ import re from playwright.sync_api import Page from tools.logger import get_logger from components.modal_window_component import ModalWindowComponent logger = get_logger("VIEW_TEMPLATE_MODAL_WINDOW") class ViewTemplateModalWindow(ModalWindowComponent): """Модальное окно шаблона. Наследует ModalWindowComponent и добавляет функционал для: 1. Инициализации модального окна с конкретным шаблоном 2. Закрытия модального окна 3. Получения конфигурационных данных шаблона 4. Проверки содержимого модального окна """ def __init__(self, page: Page, template_name: str): """Инициализирует элементы формы модального окна шаблона.""" super().__init__(page) # Настройка заголовка и кнопки закрытия self.window_title = template_name locator_button_toolbar_close = self.page.get_by_role("navigation").filter( has_text=re.compile(self.window_title) ).get_by_role("button") self.add_toolbar_title(self.window_title) self.add_toolbar_button(locator_button_toolbar_close, "close") def close_window(self) -> None: """Закрывает окно через кнопку 'Закрыть'.""" close_button = self.get_button_by_name("close") close_button.click() def check_content(self) -> None: """Проверяет наличие и корректность элементов окна. Проверяет: 1. Наличие заголовка окна с именем шаблона 2. Видимость кнопки закрытия 3. Подсказку кнопки закрытия """ self.check_by_window_title() self.check_toolbar_button_visibility("close") self.check_toolbar_button_tooltip("close", "Закрыть") # Разрабатывается ========================================================= def _get_config_data(self) -> dict: """Получает конфигурационные данные из модального окна. Returns: dict: Словарь с конфигурационными данными или пустой словарь """ config_data = {} # Ищем контейнер с конфигурационными данными config_container = self.page.locator( "//*[@id='app']/div[2]/div/div/div/div/div/div/div/div/div[2]/div/div/div" ) return config_data