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