удален alert_component.py из корня проекта
Signed-off-by: RadislavY <ya.radislav@gmail.ru>pull/1/head
parent
399c17131f
commit
f9be9017c2
|
|
@ -1,98 +0,0 @@
|
||||||
from elements.text_element import Text
|
|
||||||
from playwright.sync_api import Page, expect
|
|
||||||
from tools.logger import get_logger
|
|
||||||
|
|
||||||
from components.base_component import BaseComponent
|
|
||||||
|
|
||||||
logger = get_logger("ALERT")
|
|
||||||
|
|
||||||
|
|
||||||
class AlertComponent(BaseComponent):
|
|
||||||
"""Компонент для работы с alert-окнами.
|
|
||||||
|
|
||||||
Поддерживает различные типы alert-окон: error, success, info, warning.
|
|
||||||
|
|
||||||
Атрибуты:
|
|
||||||
page: экземпляр страницы Playwright
|
|
||||||
alert_type: тип alert-окна (error/success/info/warning)
|
|
||||||
text: текстовый элемент сообщения alert-окна
|
|
||||||
"""
|
|
||||||
|
|
||||||
def __init__(self, page: Page, alert_type: str):
|
|
||||||
"""Инициализация компонента alert-окна.
|
|
||||||
|
|
||||||
Args:
|
|
||||||
page: экземпляр страницы Playwright
|
|
||||||
alert_type: тип alert-окна (error/success/info/warning)
|
|
||||||
|
|
||||||
Raises:
|
|
||||||
ValueError: если передан неподдерживаемый тип alert-окна
|
|
||||||
"""
|
|
||||||
super().__init__(page)
|
|
||||||
|
|
||||||
alert_types = ["error", "success", "info", "warning"]
|
|
||||||
if alert_type not in alert_types:
|
|
||||||
raise ValueError("Unsupported type of alert window")
|
|
||||||
|
|
||||||
self.alert_type = alert_type
|
|
||||||
self.text = Text(page,
|
|
||||||
f"//div[@class='v-alert {self.alert_type}']/div",
|
|
||||||
"Alert message")
|
|
||||||
|
|
||||||
# Действия:
|
|
||||||
def get_text(self) -> str:
|
|
||||||
"""Получение текста сообщения из alert-окна.
|
|
||||||
|
|
||||||
Returns:
|
|
||||||
str: текст сообщения alert-окна
|
|
||||||
"""
|
|
||||||
return self.text.get_text(0)
|
|
||||||
|
|
||||||
# Проверки:
|
|
||||||
def check_presence(self, text: str)-> None:
|
|
||||||
"""Проверка наличия alert-окна с заданным текстом.
|
|
||||||
|
|
||||||
Args:
|
|
||||||
text: текст для проверки (если пустая строка - проверяется только наличие окна)
|
|
||||||
|
|
||||||
Raises:
|
|
||||||
AssertionError: если alert-окно не найдено
|
|
||||||
"""
|
|
||||||
msg = f"No {self.alert_type} alert window on page"
|
|
||||||
if text == "":
|
|
||||||
expect(self.page.get_by_role("alert")).to_be_visible(), msg
|
|
||||||
else:
|
|
||||||
expect(
|
|
||||||
self.page.get_by_role("alert").filter(
|
|
||||||
has_text=text)).to_be_visible(), msg
|
|
||||||
|
|
||||||
def check_absence(self, text: str, timeout: int = 30000):
|
|
||||||
"""Проверка отсутствия alert-окна с заданным текстом.
|
|
||||||
|
|
||||||
Args:
|
|
||||||
text: текст для проверки
|
|
||||||
timeout: время ожидания исчезновения (в миллисекундах)
|
|
||||||
|
|
||||||
Raises:
|
|
||||||
AssertionError: если alert-окно не исчезает в течение заданного времени
|
|
||||||
"""
|
|
||||||
seconds = int(timeout / 1000)
|
|
||||||
msg = f"Alert {
|
|
||||||
self.alert_type} window should disappear after {seconds} seconds"
|
|
||||||
expect(
|
|
||||||
self.page.get_by_role("alert").filter(
|
|
||||||
has_text=text)).to_be_hidden(
|
|
||||||
timeout=timeout), msg
|
|
||||||
|
|
||||||
def check_text(self, alert_text: str):
|
|
||||||
"""Проверка точного соответствия текста в alert-окне.
|
|
||||||
|
|
||||||
Args:
|
|
||||||
alert_text: ожидаемый текст сообщения
|
|
||||||
|
|
||||||
Raises:
|
|
||||||
AssertionError: если текст не соответствует ожидаемому
|
|
||||||
"""
|
|
||||||
self.text.check_have_text(
|
|
||||||
alert_text, f"Unexpected message in alert {
|
|
||||||
self.alert_type} window")
|
|
||||||
Loading…
Reference in New Issue