77 lines
3.5 KiB
Python
77 lines
3.5 KiB
Python
"""Модуль 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)
|