Skip to content

TextInput

Модуль text_input_element содержит класс для работы с текстовыми полями ввода.

Класс TextInput наследует базовый функционал BaseElement и предоставляет методы для взаимодействия с текстовыми полями ввода на странице.

TextInput

Bases: BaseElement

Класс для работы с текстовыми полями ввода.

Наследует функциональность BaseElement и добавляет методы для ввода, очистки и проверки текстовых полей.

Source code in elements\text_input_element.py
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
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

type_of property

Возвращает тип элемента ('текстовое поле ввода').

Returns:

Name Type Description
str str

Тип элемента - 'текстовое поле ввода'.

check_editable_input(msg)

Проверяет, что поле ввода редактируемое.

Parameters:

Name Type Description Default
msg str

Сообщение об ошибке при неудачной проверке.

required

Raises:

Type Description
AssertionError

Если поле не пустое.

Source code in elements\text_input_element.py
108
109
110
111
112
113
114
115
116
117
118
119
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

check_empty_input(msg)

Проверяет, что поле ввода пустое.

Parameters:

Name Type Description Default
msg str

Сообщение об ошибке при неудачной проверке.

required

Raises:

Type Description
AssertionError

Если поле не пустое.

Source code in elements\text_input_element.py
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
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

clear()

Очищает содержимое текстового поля.

Source code in elements\text_input_element.py
87
88
89
90
91
92
def clear(self) -> None:
    """Очищает содержимое текстового поля."""

    logger.info(f'Clearing text input "{self.name}"')
    self.locator.press('Control+A')
    self.locator.press('Backspace')

decrease_value()

Уменьшение на единицу значения поля настройки с помощью стрелочки вниз.

Source code in elements\text_input_element.py
51
52
53
54
55
56
57
58
59
60
61
62
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)

get_input_type()

Возвращает значение аттрибута type поля ввода.

Returns:

Name Type Description
str str

Значение аттрибута type.

Source code in elements\text_input_element.py
42
43
44
45
46
47
48
49
def get_input_type(self) -> str:
    """Возвращает значение аттрибута type поля ввода.

    Returns:
        str: Значение аттрибута type.
    """

    return self.locator.get_attribute("type")

get_input_value()

Возвращает текущее значение поля ввода.

Returns:

Name Type Description
str str

Текущее значение в поле.

Source code in elements\text_input_element.py
32
33
34
35
36
37
38
39
40
def get_input_value(self) -> str:
    """Возвращает текущее значение поля ввода.

    Returns:
        str: Текущее значение в поле.
    """

    logger.info(f'Getting value from text input "{self.name}"')
    return self.locator.input_value()

increase_value()

Увеличение на единицу значения поля настройки с помощью стрелочки вверх.

Source code in elements\text_input_element.py
64
65
66
67
68
69
70
71
72
73
74
75
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)

input_value(value)

Вводит указанное значение в поле.

Parameters:

Name Type Description Default
value str

Значение для ввода.

required
Source code in elements\text_input_element.py
77
78
79
80
81
82
83
84
85
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)