e-nms_qa_automation/components/modal_window_component.py

103 lines
4.5 KiB
Python

from playwright.sync_api import Page
from components.base_component import BaseComponent
from components.toolbar_component import ToolbarComponent
from elements.button_element import Button
from locators.modal_window_locators import ModalWindowLocators
from tools.logger import get_logger
logger = get_logger("MODAL_WINDOW")
class ModalWindowComponent(BaseComponent):
"""Компонент модального окна."""
def __init__(self, page: Page):
super().__init__(page)
self.toolbar = ToolbarComponent(page, "")
self.content_items = {}
self.buttons = []
# Действия:
def add_content_item(self, name: str, item: object) -> None:
"""Добавление элемента содержимого в окно."""
self.content_items[name] = item
def get_content_item(self, name: str) -> object | None:
"""Получение элемента содержимого по имени."""
return self.content_items.get(name)
def add_toolbar_title(self, title: str) -> None:
"""Добавление заголовка в панель инструментов."""
self.toolbar.add_title(title)
def add_toolbar_button(self, locator: str, name: str) -> None:
"""Добавление кнопки в панель инструментов."""
self.toolbar.add_button(locator, name)
def add_button(self, locator: str, name: str) -> None:
"""Добавление кнопки в окно."""
self.buttons.append(Button(self.page, locator, name))
def get_button_by_name(self, name: str) -> Button | None:
"""Поиск кнопки по имени."""
for button in self.buttons:
if button.name == name:
return button
return None
def click_button(self, name: str) -> None:
"""Нажатие кнопки по имени."""
button = self.get_button_by_name(name)
if button is None:
assert False, f"Button with name '{name}' not found"
button.click()
def click_toolbar_close_button(self) -> None:
"""Нажатие кнопки закрытия в панели инструментов."""
self.toolbar.click_button("close")
def scroll_window_down(self) -> None:
"""Прокрутка содержимого окна вниз."""
self.scroll_down(ModalWindowLocators.MODAL_WINDOW)
def scroll_window_up(self) -> None:
"""Прокрутка содержимого окна вверх."""
self.scroll_up(ModalWindowLocators.MODAL_WINDOW)
def scroll_window_left(self) -> None:
"""Прокрутка содержимого окна влево."""
self.scroll_left(ModalWindowLocators.MODAL_WINDOW)
def scroll_window_right(self) -> None:
"""Прокрутка содержимого окна вправо."""
self.scroll_right(ModalWindowLocators.MODAL_WINDOW)
# Проверки:
def check_window_vertical_scrolling(self) -> bool:
"""Проверка возможности вертикальной прокрутки."""
return self.is_scrollable_vertically(ModalWindowLocators.MODAL_WINDOW)
def check_window_horizontal_scrolling(self) -> bool:
"""Проверка возможности горизонтальной прокрутки."""
return self.is_scrollable_horizontally(ModalWindowLocators.MODAL_WINDOW)
def check_by_window_title(self) -> None:
"""Проверка наличия окна по заголовку."""
self.toolbar.check_presence(f"Modal window with '{self.toolbar.title}' is missing")
def check_button_presence(self, name: str) -> None:
"""Проверка наличия кнопки по имени."""
button = self.get_button_by_name(name)
if button is None:
assert False, f"Button with name '{name}' not found"
button.check_presence(f"Button with name '{name}' is missing")
def check_toolbar_button_presence(self, name: str) -> None:
"""Проверка наличия кнопки в панели инструментов."""
self.toolbar.check_button_presence(name)
def check_toolbar_button_tooltip(self, name: str, tooltip: str) -> None:
"""Проверка подсказки кнопки в панели инструментов."""
self.toolbar.check_button_tooltip(name, tooltip)