from playwright.sync_api import expect from elements.base_element import BaseElement from tools.logger import get_logger logger = get_logger("TEXT_INPUT") class TextInput(BaseElement): """Класс для работы с текстовыми полями ввода на странице. Наследует функциональность базового элемента и добавляет специфичные для текстовых полей методы. """ @property def type_of(self) -> str: """Возвращает тип элемента - 'текстовое поле ввода'. Returns: Строка с типом элемента. """ return "text input" # Действия: def get_input_value(self) -> str: """Получает текущее значение текстового поля. Returns: Текущее значение поля ввода. """ logger.info(f'Getting value from text input "{self.name}"') return self.locator.input_value() def input_value(self, value: str) -> None: """Вводит указанное значение в текстовое поле. Args: value: Значение для ввода. """ logger.info(f'Inputting value "{value}" to text input "{self.name}"') self.locator.fill(value) def clear(self) -> None: """Очищает содержимое текстового поля.""" logger.info(f'Clearing text input "{self.name}"') self.locator.press('Control+A') self.locator.press('Backspace') # Проверки: def check_empty_input(self, msg: str) -> None: """Проверяет, что текстовое поле пустое. Args: msg: Сообщение об ошибке при неудачной проверке. Raises: AssertionError: Если поле не пустое. """ logger.info(f'Checking that text input "{self.name}" is empty') expect(self.locator).to_be_empty(), msg