75 lines
3.1 KiB
Python
75 lines
3.1 KiB
Python
"""Модуль 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
|
||
|