46 lines
1.9 KiB
Python
46 lines
1.9 KiB
Python
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" |