from playwright.sync_api import expect from elements.base_element import BaseElement from tools.logger import get_logger logger = get_logger("DROPDOWN_LIST") class DropdownList(BaseElement): """Класс для работы с выпадающими списками на странице. Наследует функциональность базового элемента и добавляет специфичные для dropdown-списков методы. """ @property def type_of(self) -> str: """Возвращает тип элемента - 'выпадающий список'. Returns: Строка с типом элемента. """ return "dropdown list" # Действия: def click_item_with_text(self, text: str) -> None: """Кликает на элемент списка с указанным текстом. Args: text: Текст элемента, который нужно выбрать. """ logger.info(f'Selecting item with text "{text}" from dropdown "{self.name}"') self.page.get_by_role("listitem").filter(has_text=text).click() # Проверки: def check_item_with_text(self, text: str) -> None: """Проверяет наличие и доступность элемента с указанным текстом. Args: text: Текст элемента, который нужно проверить. Raises: AssertionError: Если элемент отсутствует или недоступен. """ logger.info(f'Checking item with text "{text}" in dropdown "{self.name}"') 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"