From ad8eb5599c895016d8c1b1a7533b13837a01243a Mon Sep 17 00:00:00 2001 From: Radislav Date: Mon, 21 Jul 2025 15:21:33 +0300 Subject: [PATCH] =?UTF-8?q?feat(modal=5Fwindow=5Fcomponent):=20=D0=B4?= =?UTF-8?q?=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5=D0=BD=D1=8B=20=D0=B0=D0=BD?= =?UTF-8?q?=D0=BD=D0=BE=D1=82=D0=B0=D1=86=D0=B8=D0=B8=20=D1=82=D0=B8=D0=BF?= =?UTF-8?q?=D0=BE=D0=B2=20=D0=B4=D0=BB=D1=8F=20=D0=BC=D0=B5=D1=82=D0=BE?= =?UTF-8?q?=D0=B4=D0=BE=D0=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Добавлены возвращаемые типы для всех методов: * -> 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() Изменения улучшают статический анализ кода и документируют интерфейсы методов. --- components/modal_window_component.py | 149 ++++++--------------------- 1 file changed, 32 insertions(+), 117 deletions(-) diff --git a/components/modal_window_component.py b/components/modal_window_component.py index 13a0115..b71592d 100644 --- a/components/modal_window_component.py +++ b/components/modal_window_component.py @@ -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) \ No newline at end of file