feat(navbar_component): добавлены аннотации типов для методов панели навигации
- Добавлены аннотации параметров: * locator: str | Locator во всех методах * item_name: str в click_item(), click_sub_item() и check_item_visibility() * sublevel_number: int в click_sub_item() - Добавлены возвращаемые типы: * -> list[str] для get_item_names() * -> None для методов действий и проверок Изменения улучшают документирование API компонента и помогают в статическом анализе кода.pull/1/head
parent
ad8eb5599c
commit
025b171724
|
|
@ -1,4 +1,4 @@
|
|||
from playwright.sync_api import Page
|
||||
from playwright.sync_api import Page, Locator
|
||||
|
||||
from components.base_component import BaseComponent
|
||||
from locators.navigation_panel_locators import NavigationPanelLocators
|
||||
|
|
@ -9,57 +9,24 @@ logger = get_logger("NAVIGATION_PANEL")
|
|||
|
||||
|
||||
class NavigationPanelComponent(BaseComponent):
|
||||
"""Компонент панели навигации.
|
||||
|
||||
Предоставляет методы для взаимодействия с элементами навигационной панели.
|
||||
Наследуется от BaseComponent.
|
||||
|
||||
Атрибуты:
|
||||
page: Page - экземпляр страницы Playwright
|
||||
"""
|
||||
"""Компонент панели навигации."""
|
||||
|
||||
def __init__(self, page: Page):
|
||||
"""Инициализация компонента панели навигации.
|
||||
|
||||
Args:
|
||||
page: Page - экземпляр страницы Playwright
|
||||
"""
|
||||
super().__init__(page)
|
||||
|
||||
# Действия:
|
||||
def get_item_names(self, locator):
|
||||
"""Получает тексты всех элементов по указанному локатору.
|
||||
|
||||
Args:
|
||||
locator: Локатор для поиска элементов
|
||||
|
||||
Returns:
|
||||
list: Список текстов элементов
|
||||
"""
|
||||
def get_item_names(self, locator: str | Locator) -> list[str]:
|
||||
"""Получает тексты всех элементов по указанному локатору."""
|
||||
loc = self.get_locator(locator)
|
||||
return loc.all_inner_texts()
|
||||
|
||||
def click_item(self, locator, item_name):
|
||||
"""Кликает по элементу с указанным текстом.
|
||||
|
||||
Args:
|
||||
locator: Локатор для поиска элемента
|
||||
item_name: Текст элемента для клика
|
||||
"""
|
||||
def click_item(self, locator: str | Locator, item_name: str) -> None:
|
||||
"""Кликает по элементу с указанным текстом."""
|
||||
loc = self.get_locator(locator)
|
||||
loc.get_by_text(item_name).click()
|
||||
|
||||
def click_sub_item(self, locator, sublevel_number, item_name):
|
||||
"""Кликает по вложенному элементу с указанным текстом.
|
||||
|
||||
Args:
|
||||
locator: Локатор для поиска элемента
|
||||
sublevel_number: Уровень вложенности (1 или 2)
|
||||
item_name: Текст элемента для клика
|
||||
|
||||
Raises:
|
||||
ValueError: Если указан недопустимый уровень вложенности
|
||||
"""
|
||||
def click_sub_item(self, locator: str | Locator, sublevel_number: int, item_name: str) -> None:
|
||||
"""Кликает по вложенному элементу с указанным текстом."""
|
||||
root_locator = self.get_locator(NavigationPanelLocators.NODE_ROOT)
|
||||
children_locator = self.get_locator(NavigationPanelLocators.NODE_CHILDREN)
|
||||
|
||||
|
|
@ -73,13 +40,8 @@ class NavigationPanelComponent(BaseComponent):
|
|||
raise ValueError("the navigation panel has two levels of nesting only")
|
||||
|
||||
# Проверки:
|
||||
def check_item_visibility(self, locator, item_name):
|
||||
"""Проверяет видимость элемента с указанным текстом.
|
||||
|
||||
Args:
|
||||
locator: Локатор для поиска элемента
|
||||
item_name: Текст элемента для проверки
|
||||
"""
|
||||
def check_item_visibility(self, locator: str | Locator, item_name: str) -> None:
|
||||
"""Проверяет видимость элемента с указанным текстом."""
|
||||
loc = self.get_locator(locator).get_by_text(item_name)
|
||||
msg = f"Navigation panel item '{item_name}' is not visible"
|
||||
self.check_presence(loc, msg)
|
||||
Loading…
Reference in New Issue