"""Модуль modal_view_task содержит класс для работы с модальным окном отображения задачи вкладки Действия панели событий. Класс ViewTaskModalWindow наследует базовый функционал ModalWindowComponent и реализует методы просмотра модального окна отображения задачи. """ from playwright.sync_api import Page from tools.logger import get_logger from locators.modal_window_locators import ModalWindowLocators from components.table_component import TableComponent from components.modal_window_component import ModalWindowComponent logger = get_logger("VIEW_TASK_MODAL_WINDOW") class ViewTaskModalWindow(ModalWindowComponent): """Модальное окно отображения отображения задачи. Наследует ModalWindowComponent и добавляет функционал для: 1. Инициализации модального окна 2. Закрытия модального окна через тулбар 3. Проверки содержимого модального окна """ def __init__(self, page: Page): """Инициализирует элементы формы модального окна отображения задачи.""" super().__init__(page) self.window_title_locator = page.locator(ModalWindowLocators.TASK_MODAL_WINDOW). \ locator("//div[@class='v-toolbar__title']") # Настройка кнопки закрытия button_close_locator = page.locator(ModalWindowLocators.TASK_MODAL_WINDOW).get_by_role("button") self.add_toolbar_button(button_close_locator, "close") self.task_stages_table_locator = page.locator(ModalWindowLocators.TASK_MODAL_WINDOW). \ locator("//div[@class='scrolltable']/div/table") self.task_stages_table = TableComponent(page) # Действия: def close(self): """Закрывает окно кнопкой на тулбаре.""" self.click_toolbar_close_button() def get_stages_table_content(self) -> list[list[str]]: """Возвращает содержимое таблицы, включая заголовки. Returns: Двумерный список с содержимым таблицы. """ return self.task_stages_table.read(self.task_stages_table_locator) def get_window_title(self) -> str: """Возвращает заголовок окна""" return self.toolbar.get_toolbar_title_text(self.window_title_locator) # Проверки: def check_content(self) -> None: """Проверяет наличие элементов окна. """ self.toolbar.check_toolbar_presence_by_locator(self.page.locator(ModalWindowLocators.TASK_MODAL_WINDOW). \ locator("//nav"), "Toolbar is missing") self.check_toolbar_button_visibility("close") self.check_toolbar_button_tooltip("close", "Закрыть") self.task_stages_table.check_visibility(self.task_stages_table_locator, "Task stages table is missing") def check_stages_table_headers(self, actual_headers, expected_headers) -> None: """ Проверка соответствия заголовка таблицы ожидаемому""" self.task_stages_table.check_table_headers(actual_headers, expected_headers)