Skip to content

AlertComponent

AlertComponent

Bases: BaseComponent

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

Поддерживает различные типы alert-окон: error, success, info, warning.

Атрибуты

page: экземпляр страницы Playwright alert_type: тип alert-окна (error/success/info/warning) text: текстовый элемент сообщения alert-окна

Source code in components\alert_component.py
11
12
13
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
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):
        """Получение текста сообщения из alert-окна.

        Returns:
            str: текст сообщения alert-окна
        """
        return self.text.get_text(0)

    # Проверки:
    def check_presence(self, text):
        """Проверка наличия 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, timeout=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):
        """Проверка точного соответствия текста в alert-окне.

        Args:
            alert_text: ожидаемый текст сообщения

        Raises:
            AssertionError: если текст не соответствует ожидаемому
        """
        self.text.check_have_text(alert_text, f"Unexpected message in alert {self.alert_type} window")

__init__(page, alert_type)

Инициализация компонента alert-окна.

Parameters:

Name Type Description Default
page Page

экземпляр страницы Playwright

required
alert_type str

тип alert-окна (error/success/info/warning)

required

Raises:

Type Description
ValueError

если передан неподдерживаемый тип alert-окна

Source code in components\alert_component.py
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
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") 

check_absence(text, timeout=30000)

Проверка отсутствия alert-окна с заданным текстом.

Parameters:

Name Type Description Default
text

текст для проверки

required
timeout

время ожидания исчезновения (в миллисекундах)

30000

Raises:

Type Description
AssertionError

если alert-окно не исчезает в течение заданного времени

Source code in components\alert_component.py
66
67
68
69
70
71
72
73
74
75
76
77
78
def check_absence(self, text, timeout=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

check_presence(text)

Проверка наличия alert-окна с заданным текстом.

Parameters:

Name Type Description Default
text

текст для проверки (если пустая строка - проверяется только наличие окна)

required

Raises:

Type Description
AssertionError

если alert-окно не найдено

Source code in components\alert_component.py
51
52
53
54
55
56
57
58
59
60
61
62
63
64
def check_presence(self, text):
    """Проверка наличия 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

check_text(alert_text)

Проверка точного соответствия текста в alert-окне.

Parameters:

Name Type Description Default
alert_text

ожидаемый текст сообщения

required

Raises:

Type Description
AssertionError

если текст не соответствует ожидаемому

Source code in components\alert_component.py
80
81
82
83
84
85
86
87
88
89
def check_text(self, alert_text):
    """Проверка точного соответствия текста в alert-окне.

    Args:
        alert_text: ожидаемый текст сообщения

    Raises:
        AssertionError: если текст не соответствует ожидаемому
    """
    self.text.check_have_text(alert_text, f"Unexpected message in alert {self.alert_type} window")

get_text()

Получение текста сообщения из alert-окна.

Returns:

Name Type Description
str

текст сообщения alert-окна

Source code in components\alert_component.py
42
43
44
45
46
47
48
def get_text(self):
    """Получение текста сообщения из alert-окна.

    Returns:
        str: текст сообщения alert-окна
    """
    return self.text.get_text(0)