feat(modal_window_component): добавлены аннотации типов для методов
- Добавлены возвращаемые типы для всех методов: * -> None для методов действий * -> bool для проверок прокрутки * -> object | None для get_content_item() * -> Button | None для get_button_by_name() - Добавлены аннотации параметров: * name: str и item: object в add_content_item() * name: str в get_content_item() * title: str в add_toolbar_title() * locator: str и name: str в add_toolbar_button() и add_button() * name: str в click_button() и проверках кнопок * tooltip: str в check_toolbar_button_tooltip() Изменения улучшают статический анализ кода и документируют интерфейсы методов.pull/1/head
parent
de4fc8c7c2
commit
ad8eb5599c
|
|
@ -11,178 +11,93 @@ logger = get_logger("MODAL_WINDOW")
|
|||
|
||||
|
||||
class ModalWindowComponent(BaseComponent):
|
||||
"""Компонент модального окна.
|
||||
|
||||
Предоставляет методы для работы с модальными окнами:
|
||||
- управление содержимым и кнопками
|
||||
- прокрутка содержимого
|
||||
- проверка элементов интерфейса
|
||||
|
||||
Атрибуты:
|
||||
page: экземпляр страницы Playwright
|
||||
toolbar: компонент панели инструментов окна
|
||||
content_items: словарь элементов содержимого
|
||||
buttons: список кнопок окна
|
||||
"""
|
||||
"""Компонент модального окна."""
|
||||
|
||||
def __init__(self, page: Page):
|
||||
"""Инициализация компонента модального окна.
|
||||
|
||||
Args:
|
||||
page: экземпляр страницы Playwright
|
||||
"""
|
||||
super().__init__(page)
|
||||
self.toolbar = ToolbarComponent(page, "")
|
||||
self.content_items = {}
|
||||
self.buttons = []
|
||||
|
||||
# Действия:
|
||||
def add_content_item(self, name, item):
|
||||
"""Добавление элемента содержимого в окно.
|
||||
|
||||
Args:
|
||||
name: имя элемента
|
||||
item: объект элемента
|
||||
"""
|
||||
def add_content_item(self, name: str, item: object) -> None:
|
||||
"""Добавление элемента содержимого в окно."""
|
||||
self.content_items[name] = item
|
||||
|
||||
def get_content_item(self, name):
|
||||
"""Получение элемента содержимого по имени.
|
||||
|
||||
Args:
|
||||
name: имя элемента
|
||||
|
||||
Returns:
|
||||
Элемент содержимого или None, если не найден
|
||||
"""
|
||||
def get_content_item(self, name: str) -> object | None:
|
||||
"""Получение элемента содержимого по имени."""
|
||||
return self.content_items.get(name)
|
||||
|
||||
def add_toolbar_title(self, title: str):
|
||||
"""Добавление заголовка в панель инструментов.
|
||||
|
||||
Args:
|
||||
title: текст заголовка
|
||||
"""
|
||||
def add_toolbar_title(self, title: str) -> None:
|
||||
"""Добавление заголовка в панель инструментов."""
|
||||
self.toolbar.add_title(title)
|
||||
|
||||
def add_toolbar_button(self, locator, name):
|
||||
"""Добавление кнопки в панель инструментов.
|
||||
|
||||
Args:
|
||||
locator: локатор кнопки
|
||||
name: имя кнопки
|
||||
"""
|
||||
def add_toolbar_button(self, locator: str, name: str) -> None:
|
||||
"""Добавление кнопки в панель инструментов."""
|
||||
self.toolbar.add_button(locator, name)
|
||||
|
||||
def add_button(self, locator, name):
|
||||
"""Добавление кнопки в окно.
|
||||
|
||||
Args:
|
||||
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) -> Button | None:
|
||||
"""Поиск кнопки по имени.
|
||||
|
||||
Args:
|
||||
name: имя кнопки
|
||||
|
||||
Returns:
|
||||
Button: найденная кнопка или None
|
||||
"""
|
||||
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):
|
||||
"""Нажатие кнопки по имени.
|
||||
|
||||
Args:
|
||||
name: имя кнопки
|
||||
|
||||
Raises:
|
||||
AssertionError: если кнопка не найдена
|
||||
"""
|
||||
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):
|
||||
def click_toolbar_close_button(self) -> None:
|
||||
"""Нажатие кнопки закрытия в панели инструментов."""
|
||||
self.toolbar.click_button("close")
|
||||
|
||||
def scroll_window_down(self):
|
||||
def scroll_window_down(self) -> None:
|
||||
"""Прокрутка содержимого окна вниз."""
|
||||
self.scroll_down(ModalWindowLocators.MODAL_WINDOW)
|
||||
|
||||
def scroll_window_up(self):
|
||||
def scroll_window_up(self) -> None:
|
||||
"""Прокрутка содержимого окна вверх."""
|
||||
self.scroll_up(ModalWindowLocators.MODAL_WINDOW)
|
||||
|
||||
def scroll_window_left(self):
|
||||
def scroll_window_left(self) -> None:
|
||||
"""Прокрутка содержимого окна влево."""
|
||||
self.scroll_left(ModalWindowLocators.MODAL_WINDOW)
|
||||
|
||||
def scroll_window_right(self):
|
||||
def scroll_window_right(self) -> None:
|
||||
"""Прокрутка содержимого окна вправо."""
|
||||
self.scroll_right(ModalWindowLocators.MODAL_WINDOW)
|
||||
|
||||
# Проверки:
|
||||
def check_window_vertical_scrolling(self):
|
||||
"""Проверка возможности вертикальной прокрутки.
|
||||
|
||||
Returns:
|
||||
bool: True если прокрутка возможна
|
||||
"""
|
||||
def check_window_vertical_scrolling(self) -> bool:
|
||||
"""Проверка возможности вертикальной прокрутки."""
|
||||
return self.is_scrollable_vertically(ModalWindowLocators.MODAL_WINDOW)
|
||||
|
||||
def check_window_horizontal_scrolling(self):
|
||||
"""Проверка возможности горизонтальной прокрутки.
|
||||
|
||||
Returns:
|
||||
bool: True если прокрутка возможна
|
||||
"""
|
||||
def check_window_horizontal_scrolling(self) -> bool:
|
||||
"""Проверка возможности горизонтальной прокрутки."""
|
||||
return self.is_scrollable_horizontally(ModalWindowLocators.MODAL_WINDOW)
|
||||
|
||||
def check_by_window_title(self):
|
||||
"""Проверка наличия окна по заголовку.
|
||||
|
||||
Raises:
|
||||
AssertionError: если окно не найдено
|
||||
"""
|
||||
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):
|
||||
"""Проверка наличия кнопки по имени.
|
||||
|
||||
Args:
|
||||
name: имя кнопки
|
||||
|
||||
Raises:
|
||||
AssertionError: если кнопка не найдена
|
||||
"""
|
||||
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):
|
||||
"""Проверка наличия кнопки в панели инструментов.
|
||||
|
||||
Args:
|
||||
name: имя кнопки
|
||||
"""
|
||||
def check_toolbar_button_presence(self, name: str) -> None:
|
||||
"""Проверка наличия кнопки в панели инструментов."""
|
||||
self.toolbar.check_button_presence(name)
|
||||
|
||||
def check_toolbar_button_tooltip(self, name, tooltip):
|
||||
"""Проверка подсказки кнопки в панели инструментов.
|
||||
|
||||
Args:
|
||||
name: имя кнопки
|
||||
tooltip: ожидаемый текст подсказки
|
||||
"""
|
||||
def check_toolbar_button_tooltip(self, name: str, tooltip: str) -> None:
|
||||
"""Проверка подсказки кнопки в панели инструментов."""
|
||||
self.toolbar.check_button_tooltip(name, tooltip)
|
||||
Loading…
Reference in New Issue