# Исходный код elements.text_input_element

    """Модуль 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 decrease_value(self) -> None:
            """Уменьшение на единицу значения поля настройки с помощью стрелочки вниз."""

            logger.info(f'Decrease input value for "{self.name}"')

            attr = self.locator.get_attribute("type")
            assert attr=="number", "Field type should be number to increase value"

            self.locator.hover()
            self.locator.wait_for(timeout=500)
            self.locator.press('ArrowDown')
            self.locator.wait_for(timeout=500)

        def increase_value(self) -> None:
            """Увеличение на единицу значения поля настройки с помощью стрелочки вверх."""

            logger.info(f'Increase input value for "{self.name}"')

            attr = self.locator.get_attribute("type")
            assert attr=="number", "Field type should be number to increase value"

            self.locator.hover()
            self.locator.wait_for(timeout=500)
            self.locator.press('ArrowUp')
            self.locator.wait_for(timeout=500)

        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

        def check_editable_input(self, msg: str) -> None:
            """Проверяет, что поле ввода редактируемое.

            Args:
                msg (str): Сообщение об ошибке при неудачной проверке.

            Raises:
                AssertionError: Если поле не пустое.
            """

            logger.info(f'Checking that text input "{self.name}" is editable')
            expect(self.locator).to_be_editable(), msg