"""Модуль text_input_element содержит класс для работы с текстовыми полями ввода. Класс TextInput наследует базовый функционал BaseElement и предоставляет методы для взаимодействия с текстовыми полями ввода на странице. """ from playwright.sync_api import expect from tools.logger import get_logger from elements.base_element import BaseElement logger = get_logger("TEXT_INPUT") class TextInput(BaseElement): """Класс для работы с текстовыми полями ввода. Наследует функциональность BaseElement и добавляет методы для ввода, очистки и проверки текстовых полей. """ @property def type_of(self) -> str: """Возвращает тип элемента ('текстовое поле ввода'). Returns: str: Тип элемента - 'текстовое поле ввода'. """ return "text input" # Действия: def get_input_value(self) -> str: """Возвращает текущее значение поля ввода. Returns: str: Текущее значение в поле. """ logger.info(f'Getting value from text input "{self.name}"') return self.locator.input_value() def get_input_type(self) -> str: """Возвращает значение аттрибута type поля ввода. Returns: str: Значение аттрибута type. """ return self.locator.get_attribute("type") def input_value(self, value: str) -> None: """Вводит указанное значение в поле. Args: value (str): Значение для ввода. """ 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 (str): Сообщение об ошибке при неудачной проверке. Raises: AssertionError: Если поле не пустое. """ logger.info(f'Checking that text input "{self.name}" is empty') expect(self.locator).to_be_empty(), msg