e-nms_qa_automation/components_derived/modal_view_task.py

77 lines
3.5 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_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)