Исходный код 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}'" )