Skip to content

AlertComponent

Модуль для работы с компонентом alert-окна в Playwright.

Содержит класс AlertComponent для взаимодействия с различными типами alert-окон (error, success, info, warning) и проверки их состояния.

AlertComponent

Bases: BaseComponent

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

Поддерживает типы: error, success, info, warning. Позволяет проверять наличие, отсутствие и текст сообщений.

Source code in components\alert_component.py
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
90
91
92
93
94
class AlertComponent(BaseComponent):
    """Компонент для работы с alert-окнами Playwright.

    Поддерживает типы: error, success, info, warning.
    Позволяет проверять наличие, отсутствие и текст сообщений.
    """

    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: Текст сообщения.
        """

        return self.text.get_text(0)

    def check_alert_presence(self, text: str):
        """Проверяет наличие 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_alert_absence(self, text: str, timeout: int = 30000):
        """Проверяет отсутствие alert-окна с заданным текстом.

        Args:
            text: Текст для проверки.
            timeout: Время ожидания исчезновения (мс).

        Raises:
            AssertionError: Если окно не исчезает в течение заданного времени.
        """

        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")

__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
40
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_alert_absence(text, timeout=30000)

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

Parameters:

Name Type Description Default
text str

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

required
timeout int

Время ожидания исчезновения (мс).

30000

Raises:

Type Description
AssertionError

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

Source code in components\alert_component.py
68
69
70
71
72
73
74
75
76
77
78
79
80
81
def check_alert_absence(self, text: str, timeout: int = 30000):
    """Проверяет отсутствие alert-окна с заданным текстом.

    Args:
        text: Текст для проверки.
        timeout: Время ожидания исчезновения (мс).

    Raises:
        AssertionError: Если окно не исчезает в течение заданного времени.
    """

    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_alert_presence(text)

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

Parameters:

Name Type Description Default
text str

Текст для проверки. Если пустая строка - проверяет только наличие окна.

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
65
66
def check_alert_presence(self, text: str):
    """Проверяет наличие 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 str

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

required

Raises:

Type Description
AssertionError

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

Source code in components\alert_component.py
83
84
85
86
87
88
89
90
91
92
93
94
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")

get_text()

Возвращает текст сообщения из alert-окна.

Returns:

Name Type Description
str str

Текст сообщения.

Source code in components\alert_component.py
42
43
44
45
46
47
48
49
def get_text(self) -> str:
    """Возвращает текст сообщения из alert-окна.

    Returns:
        str: Текст сообщения.
    """

    return self.text.get_text(0)