e-nms_qa_automation/components_derived/modal_send_test_sms.py

110 lines
5.0 KiB
Python
Raw 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.

"""Модуль modal_send_test_sms содержит класс для работы с модальным окном для посылки тестового СМС на
базе настроек вкладки 'Уведомления/СМС'.
Класс SendTestSMSModalWindow наследует базовый функционал ModalWindowComponent
и реализует методы просмотра модального окна отображения задачи.
"""
from playwright.sync_api import Page, expect
from tools.logger import get_logger
from locators.modal_window_locators import ModalWindowLocators
from elements.text_input_element import TextInput
from components.modal_window_component import ModalWindowComponent
# from components.alert_component import AlertComponent
logger = get_logger("SEND_TEST_SMS_MODAL_WINDOW")
class SendTestSMSModalWindow(ModalWindowComponent):
"""Модальное окно для посылки тестового СМС.
Наследует ModalWindowComponent и добавляет функционал для:
1. Инициализации модального окна
2. Закрытия модального окна через тулбар
3. Проверки содержимого модального окна
"""
def __init__(self, page: Page):
"""Инициализирует элементы формы модального окна отображения задачи."""
super().__init__(page)
window_locator = page.locator(ModalWindowLocators.MODAL_WINDOW)
self.window_title_locator = window_locator.locator("//div[@class='v-toolbar__title']")
self.add_toolbar_title("Проверка sms уведомления")
# Настройка кнопки закрытия
toolbar_button_close_locator = window_locator.locator("//button[@data-testid='SMS_TEST_CARD__btn__close']")
self.add_toolbar_button(toolbar_button_close_locator, "close")
# Поле ввода номера телефона
loc = window_locator.locator("//input[@data-testid='SMS_TEST_CARD__text-field_integer__sms_phone']")
sms_phone_input = TextInput(page, loc, "sms_phone_input")
self.add_content_item("sms_phone_input", sms_phone_input)
# Добавление кнопок действий
locator_button_test = window_locator.locator("//button[@data-testid='SMS_TEST_CARD__btn__testSmsSend']")
self.add_button(locator_button_test, "test_button")
# self.alert = AlertComponent(page)
# Действия:
def close_by_toolbar_button(self):
"""Закрывает окно кнопкой на тулбаре."""
self.click_toolbar_close_button()
def click_test_button(self):
"""Отсылка sms по указанному номеру телефона нажатием кнопки 'Тест'."""
close_button = self.get_button_by_name("test_button")
close_button.click()
def get_sms_phone(self) -> str:
"""Возвращает текущее значение поля 'Номер для СМС'."""
sms_phone_input_field = self.get_content_item("sms_phone_input")
return sms_phone_input_field.get_input_value()
def input_sms_phone(self, sms_phone: str) -> None:
"""Заполнение поля 'Номер для СМС'."""
sms_phone_input_field = self.get_content_item("sms_phone_input")
sms_phone_input_field.clear()
sms_phone_input_field.input_value(sms_phone)
# Проверки:
def check_content(self) -> None:
"""Проверяет наличие элементов окна.
"""
self.check_by_window_title()
self.check_toolbar_button_visibility("close")
self.check_toolbar_button_tooltip("close", "Закрыть")
sms_phone_input_field = self.get_content_item("sms_phone_input")
sms_phone_input_field.check_visibility("SMS phone input field is missing")
sms_phone_input_field.check_editable_input("SMS phone input field should be editable")
loc = self.page.locator(ModalWindowLocators.MODAL_WINDOW). \
locator("//input[@data-testid='SMS_TEST_CARD__text-field_integer__sms_phone']")
expect(loc).to_have_attribute("aria-label", "Номер для СМС")
self.check_button_visibility("test_button")
# def should_be_success_alert(self) -> None:
# """Проверяет наличие сообщения об успешной отправке тестового сообщения.
# Raises:
# AssertionError: Если тулбар отсутствует.
# """
# alert_type = self.alert.get_alert_type()
# assert alert_type == "success", f"Expected success alert, but got {alert_type} alert"
# self.alert.check_alert_presence('\nТестовое сообщение\nотправлено\n')
# self.alert.check_alert_absence('\nТестовое сообщение\nотправлено\n')