53 lines
2.0 KiB
Python
53 lines
2.0 KiB
Python
"""Модуль dropdown_list_component содержит класс для работы с выпадающими списками.
|
||
|
||
Класс DropdownList наследует базовый функционал BaseComponent и добавляет
|
||
методы для взаимодействия с выпадающими списками на странице.
|
||
"""
|
||
|
||
from playwright.sync_api import Page
|
||
from tools.logger import get_logger
|
||
from components.base_component import BaseComponent
|
||
|
||
logger = get_logger("DROPDOWN_LIST")
|
||
|
||
class DropdownList(BaseComponent):
|
||
"""Класс для работы с выпадающими списками.
|
||
|
||
Наследует функциональность BaseElement и добавляет специфичные
|
||
методы для выбора и проверки элементов списка.
|
||
"""
|
||
|
||
def __init__(self, page: Page):
|
||
"""Инициализирует компонент выпадающего списка.
|
||
|
||
Args:
|
||
page: Экземпляр страницы Playwright.
|
||
"""
|
||
|
||
super().__init__(page)
|
||
|
||
# Действия:
|
||
def click_item_with_text(self, text: str) -> None:
|
||
"""Выбирает элемент списка по указанному тексту.
|
||
|
||
Args:
|
||
text (str): Текст элемента для выбора.
|
||
"""
|
||
|
||
self.page.get_by_role("listitem").filter(has_text=text).click()
|
||
|
||
# Проверки:
|
||
def check_item_with_text(self, text: str) -> None:
|
||
"""Проверяет наличие и доступность элемента списка.
|
||
|
||
Args:
|
||
text (str): Текст элемента для проверки.
|
||
|
||
Raises:
|
||
AssertionError: Если элемент отсутствует или недоступен.
|
||
"""
|
||
|
||
enabled = self.page.get_by_role("listitem").filter(has_text=text).is_enabled()
|
||
if not enabled:
|
||
assert False, f"Dropdown list item '{text}' is missing or disabled"
|