e-nms_qa_automation/elements/text_input_element.py

120 lines
4.3 KiB
Python
Raw Permalink Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

"""Модуль 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