e-nms_qa_automation/components_derived/modal_view_template.py

75 lines
3.1 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

"""Модуль 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