Исходный код elements.tooltip_button_element
"""Модуль tooltip_button_element содержит класс для работы с кнопками с подсказками.
Класс TooltipButton наследует базовый функционал BaseElement и добавляет
методы для проверки всплывающих подсказок у кнопок.
"""
from tools.logger import get_logger
from locators.button_locators import ButtonLocators
from elements.base_element import BaseElement
logger = get_logger("TOOLTIP_BUTTON")
[документация]
class TooltipButton(BaseElement):
"""Класс для работы с кнопками, имеющими всплывающие подсказки.
Наследует функциональность BaseElement и добавляет методы
для взаимодействия с подсказками кнопок.
"""
@property
def type_of(self) -> str:
"""Возвращает тип элемента ('tooltip_button').
Returns:
str: Тип элемента - кнопка с подсказкой.
"""
return "tooltip_button"
# Действия:
[документация]
def get_tooltip_text(self) -> str:
"""Возвращает текст всплывающей подсказки.
Returns:
str: Текст всплывающей подсказки.
"""
# Наведение на элемент для отображения подсказки
self.locator.hover()
# Получение элемента подсказки
tooltip = self.page.locator(ButtonLocators.TOOLTIP)
tooltip.wait_for(state="visible", timeout=5000)
self.page.wait_for_timeout(300)
return tooltip.text_content().strip()
[документация]
def wait_for_tooltip_to_disappear(self, timeout: int = 5000) -> None:
"""Ожидает исчезновения всех активных всплывающих подсказок."""
self.page.mouse.click(10, 10)
tooltip_locator = self.page.locator(".v-tooltip__content.menuable__content__active")
tooltip_locator.wait_for(state="hidden", timeout=timeout)
# Проверки:
[документация]
def check_tooltip_with_text(self, expected_text: str) -> None:
"""Проверяет соответствие текста всплывающей подсказки.
Args:
expected_text (str): Ожидаемый текст подсказки.
Raises:
AssertionError: Если текст подсказки не соответствует ожидаемому.
"""
# Наведение на элемент для отображения подсказки
self.locator.hover()
# Получение элемента подсказки
tooltip = self.page.locator(ButtonLocators.TOOLTIP)
tooltip.wait_for(state="visible", timeout=5000)
self.page.wait_for_timeout(300)
# Проверка соответствия текста
actual_text = tooltip.text_content().strip()
assert actual_text == expected_text, (
f"Текст подсказки не соответствует ожидаемому. "
f"Ожидалось: '{expected_text}', получено: '{actual_text}'"
)