e-nms_qa_automation/components_derived/container_actions_events.py

131 lines
6.0 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.

"""Модуль контейнера для отображения событий вкладки Действия.
Содержит класс для работы с контейнером для отображения событий
вкладки Действия через Playwright.
"""
from playwright.sync_api import Page, Locator
from tools.logger import get_logger
from locators.event_panel_locators import EventPanelLocators
from components.events_container_component import EventsContainerComponent
from components_derived.modal_view_task import ViewTaskModalWindow
logger = get_logger("ACTIONS_EVENTS_CONTAINER")
class ActionsEventsContainer(EventsContainerComponent):
"""Компонент контейнера для отображения событий вкладки Действия.
Предоставляет методы для взаимодействия с элементами
контейнера для отображения событий вкладки Действия.
"""
def __init__(self, page: Page, locator: str | Locator):
"""Инициализирует компонент контейнера для отображения событий вкладки Действия.
Args:
page: Экземпляр страницы Playwright.
"""
super().__init__(page, locator)
toolbar_locator = self.get_locator(locator).locator(EventPanelLocators.TOOLBAR). \
filter(has_text="Фильтр Реальное время Архив")
self.add_tab_to_toolbar(toolbar_locator.locator(EventPanelLocators.FILTER_TOOLBAR_BUTTON), "filter_button")
self.add_tab_to_toolbar(toolbar_locator.locator(EventPanelLocators.REAL_TIME_TOOLBAR_BUTTON),
"real_time_button")
self.add_tab_to_toolbar(toolbar_locator.locator(EventPanelLocators.ARCHIVE_TOOLBAR_BUTTON), "archive_button")
self.add_tab_to_toolbar(toolbar_locator.locator(EventPanelLocators.PDF_TOOLBAR_BUTTON), "export_to_pdf_button")
self.add_tab_to_toolbar(toolbar_locator.locator(EventPanelLocators.CSV_TOOLBAR_BUTTON), "export_to_csv_button")
events_filter = self.get_events_filter()
events_filter.add_filtering_parameter("filter_status", "Статус")
events_filter.add_filtering_parameter("filter_task_name", "НАИМЕНОВАНИЕ ЗАДАЧИ")
events_filter.add_filtering_parameter("filter_object", "Объект")
events_filter.add_filtering_parameter("filter_user", "Пользователь")
# Действия:
def click_archive_button(self) -> None:
"""Нажимает кнопку Архив на тулбаре."""
self.toolbar.check_button_visibility("archive_button")
self.click_tab_button("archive_button")
def click_real_time_button(self) -> None:
"""Нажимает кнопку Реальное время на тулбаре."""
self.toolbar.check_button_visibility("real_time_button")
self.click_tab_button("real_time_button")
def click_events_table_row(self, index) -> ViewTaskModalWindow:
"""Выбор и нажатие на строку таблицы по ее индексу."""
loc = self.get_events_table_row_locator(index)
loc.scroll_into_view_if_needed()
loc.click()
return ViewTaskModalWindow(self.page)
# Проверки:
def check_content(self) -> None:
"""Проверяет содержимое контейнера для отображения событий вкладки Действия."""
expected_real_time_headers = ['ВРЕМЯ НАЧАЛА', 'ВРЕМЯ ЗАВЕРШЕНИЯ','СТАТУС',
'НАИМЕНОВАНИЕ ЗАДАЧИ', 'ОБЪЕКТ', 'ПОЛЬЗОВАТЕЛЬ', 'ОПИСАНИЕ']
expected_archive_headers = ['ВРЕМЯ НАЧАЛА', 'ВРЕМЯ ЗАВЕРШЕНИЯ','СТАТУС',
'НАИМЕНОВАНИЕ ЗАДАЧИ', 'ОБЪЕКТ', 'ПОЛЬЗОВАТЕЛЬ', 'ПРОЦЕССИНГ']
self.should_be_toolbar()
self.should_be_toolbar_buttons()
if not self.is_tab_active("real_time_button"):
self.click_tab_button("real_time_button")
self.wait_for_timeout(1000)
self.check_events_table_content(expected_real_time_headers)
if not self.is_tab_active("archive_button"):
self.click_tab_button("archive_button")
self.wait_for_timeout(1000)
self.check_events_table_content(expected_archive_headers)
events_filter = self.click_filter_button()
events_filter.check_content()
events_filter.should_be_filtering_parameter("Статус")
events_filter.should_be_filtering_parameter("НАИМЕНОВАНИЕ ЗАДАЧИ")
events_filter.should_be_filtering_parameter("Объект")
events_filter.should_be_filtering_parameter("Пользователь")
events_filter.click_close_button()
def check_events_table_content(self, expected_headers: list[str]) -> None:
"""Проверка содержимого таблицы"""
self.should_be_events_table()
events_table = self.get_events_table_content()
if len(events_table) == 0:
assert False, "The contents of the events table are missing"
self.check_events_table_headers(events_table[0], expected_headers)
if len(events_table) == 1:
logger.info("Table body is missing")
self.should_be_pagination_buttons()
def should_be_toolbar_buttons(self) -> None:
"""Проверяет наличие и видимость кнопок тулбара."""
self.toolbar.check_button_visibility("filter_button")
self.toolbar.check_button_visibility("real_time_button")
self.toolbar.check_button_visibility("archive_button")
self.toolbar.check_button_visibility("export_to_pdf_button")
self.toolbar.check_button_visibility("export_to_csv_button")