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