Skip to content

ModalWindowComponent

ModalWindowComponent

Bases: BaseComponent

Компонент модального окна.

Предоставляет методы для работы с модальными окнами: - управление содержимым и кнопками - прокрутка содержимого - проверка элементов интерфейса

Атрибуты

page: экземпляр страницы Playwright toolbar: компонент панели инструментов окна content_items: словарь элементов содержимого buttons: список кнопок окна

Source code in components\modal_window_component.py
 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
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
class ModalWindowComponent(BaseComponent):
    """Компонент модального окна.

    Предоставляет методы для работы с модальными окнами:
    - управление содержимым и кнопками
    - прокрутка содержимого
    - проверка элементов интерфейса

    Атрибуты:
        page: экземпляр страницы Playwright
        toolbar: компонент панели инструментов окна
        content_items: словарь элементов содержимого
        buttons: список кнопок окна
    """

    def __init__(self, page: Page):
        """Инициализация компонента модального окна.

        Args:
            page: экземпляр страницы Playwright
        """
        super().__init__(page)
        self.toolbar = ToolbarComponent(page, "")
        self.content_items = {}
        self.buttons = []

    # Действия:
    def add_content_item(self, name, item):
        """Добавление элемента содержимого в окно.

        Args:
            name: имя элемента
            item: объект элемента
        """
        self.content_items[name] = item

    def get_content_item(self, name):
        """Получение элемента содержимого по имени.

        Args:
            name: имя элемента

        Returns:
            Элемент содержимого или None, если не найден
        """
        return self.content_items.get(name)

    def add_toolbar_title(self, title: str):
        """Добавление заголовка в панель инструментов.

        Args:
            title: текст заголовка
        """
        self.toolbar.add_title(title)

    def add_toolbar_button(self, locator, name):
        """Добавление кнопки в панель инструментов.

        Args:
            locator: локатор кнопки
            name: имя кнопки
        """
        self.toolbar.add_button(locator, name)

    def add_button(self, locator, name):
        """Добавление кнопки в окно.

        Args:
            locator: локатор кнопки
            name: имя кнопки
        """
        self.buttons.append(Button(self.page, locator, name))

    def get_button_by_name(self, name) -> Button | None:
        """Поиск кнопки по имени.

        Args:
            name: имя кнопки

        Returns:
            Button: найденная кнопка или None
        """
        for button in self.buttons:
            if button.name == name:
                return button
        return None

    def click_button(self, name):
        """Нажатие кнопки по имени.

        Args:
            name: имя кнопки

        Raises:
            AssertionError: если кнопка не найдена
        """
        button = self.get_button_by_name(name)
        if button is None:
            assert False, f"Button with name '{name}' not found"
        button.click()

    def click_toolbar_close_button(self):
        """Нажатие кнопки закрытия в панели инструментов."""
        self.toolbar.click_button("close")

    def scroll_window_down(self):
        """Прокрутка содержимого окна вниз."""
        self.scroll_down(ModalWindowLocators.MODAL_WINDOW)

    def scroll_window_up(self):
        """Прокрутка содержимого окна вверх."""
        self.scroll_up(ModalWindowLocators.MODAL_WINDOW)

    def scroll_window_left(self):
        """Прокрутка содержимого окна влево."""
        self.scroll_left(ModalWindowLocators.MODAL_WINDOW)

    def scroll_window_right(self):
        """Прокрутка содержимого окна вправо."""
        self.scroll_right(ModalWindowLocators.MODAL_WINDOW)

    # Проверки:
    def check_window_vertical_scrolling(self):
        """Проверка возможности вертикальной прокрутки.

        Returns:
            bool: True если прокрутка возможна
        """
        return self.is_scrollable_vertically(ModalWindowLocators.MODAL_WINDOW)

    def check_window_horizontal_scrolling(self):
        """Проверка возможности горизонтальной прокрутки.

        Returns:
            bool: True если прокрутка возможна
        """
        return self.is_scrollable_horizontally(ModalWindowLocators.MODAL_WINDOW)

    def check_by_window_title(self):
        """Проверка наличия окна по заголовку.

        Raises:
            AssertionError: если окно не найдено
        """
        self.toolbar.check_presence(f"Modal window with '{self.toolbar.title}' is missing")

    def check_button_presence(self, name):
        """Проверка наличия кнопки по имени.

        Args:
            name: имя кнопки

        Raises:
            AssertionError: если кнопка не найдена
        """
        button = self.get_button_by_name(name)
        if button is None:
            assert False, f"Button with name '{name}' not found"
        button.check_presence(f"Button with name '{name}' is missing")

    def check_toolbar_button_presence(self, name):
        """Проверка наличия кнопки в панели инструментов.

        Args:
            name: имя кнопки
        """
        self.toolbar.check_button_presence(name)

    def check_toolbar_button_tooltip(self, name, tooltip):
        """Проверка подсказки кнопки в панели инструментов.

        Args:
            name: имя кнопки
            tooltip: ожидаемый текст подсказки
        """
        self.toolbar.check_button_tooltip(name, tooltip)

__init__(page)

Инициализация компонента модального окна.

Parameters:

Name Type Description Default
page Page

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

required
Source code in components\modal_window_component.py
28
29
30
31
32
33
34
35
36
37
def __init__(self, page: Page):
    """Инициализация компонента модального окна.

    Args:
        page: экземпляр страницы Playwright
    """
    super().__init__(page)
    self.toolbar = ToolbarComponent(page, "")
    self.content_items = {}
    self.buttons = []

add_button(locator, name)

Добавление кнопки в окно.

Parameters:

Name Type Description Default
locator

локатор кнопки

required
name

имя кнопки

required
Source code in components\modal_window_component.py
77
78
79
80
81
82
83
84
def add_button(self, locator, name):
    """Добавление кнопки в окно.

    Args:
        locator: локатор кнопки
        name: имя кнопки
    """
    self.buttons.append(Button(self.page, locator, name))

add_content_item(name, item)

Добавление элемента содержимого в окно.

Parameters:

Name Type Description Default
name

имя элемента

required
item

объект элемента

required
Source code in components\modal_window_component.py
40
41
42
43
44
45
46
47
def add_content_item(self, name, item):
    """Добавление элемента содержимого в окно.

    Args:
        name: имя элемента
        item: объект элемента
    """
    self.content_items[name] = item

add_toolbar_button(locator, name)

Добавление кнопки в панель инструментов.

Parameters:

Name Type Description Default
locator

локатор кнопки

required
name

имя кнопки

required
Source code in components\modal_window_component.py
68
69
70
71
72
73
74
75
def add_toolbar_button(self, locator, name):
    """Добавление кнопки в панель инструментов.

    Args:
        locator: локатор кнопки
        name: имя кнопки
    """
    self.toolbar.add_button(locator, name)

add_toolbar_title(title)

Добавление заголовка в панель инструментов.

Parameters:

Name Type Description Default
title str

текст заголовка

required
Source code in components\modal_window_component.py
60
61
62
63
64
65
66
def add_toolbar_title(self, title: str):
    """Добавление заголовка в панель инструментов.

    Args:
        title: текст заголовка
    """
    self.toolbar.add_title(title)

check_button_presence(name)

Проверка наличия кнопки по имени.

Parameters:

Name Type Description Default
name

имя кнопки

required

Raises:

Type Description
AssertionError

если кнопка не найдена

Source code in components\modal_window_component.py
159
160
161
162
163
164
165
166
167
168
169
170
171
def check_button_presence(self, name):
    """Проверка наличия кнопки по имени.

    Args:
        name: имя кнопки

    Raises:
        AssertionError: если кнопка не найдена
    """
    button = self.get_button_by_name(name)
    if button is None:
        assert False, f"Button with name '{name}' not found"
    button.check_presence(f"Button with name '{name}' is missing")

check_by_window_title()

Проверка наличия окна по заголовку.

Raises:

Type Description
AssertionError

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

Source code in components\modal_window_component.py
151
152
153
154
155
156
157
def check_by_window_title(self):
    """Проверка наличия окна по заголовку.

    Raises:
        AssertionError: если окно не найдено
    """
    self.toolbar.check_presence(f"Modal window with '{self.toolbar.title}' is missing")

check_toolbar_button_presence(name)

Проверка наличия кнопки в панели инструментов.

Parameters:

Name Type Description Default
name

имя кнопки

required
Source code in components\modal_window_component.py
173
174
175
176
177
178
179
def check_toolbar_button_presence(self, name):
    """Проверка наличия кнопки в панели инструментов.

    Args:
        name: имя кнопки
    """
    self.toolbar.check_button_presence(name)

check_toolbar_button_tooltip(name, tooltip)

Проверка подсказки кнопки в панели инструментов.

Parameters:

Name Type Description Default
name

имя кнопки

required
tooltip

ожидаемый текст подсказки

required
Source code in components\modal_window_component.py
181
182
183
184
185
186
187
188
def check_toolbar_button_tooltip(self, name, tooltip):
    """Проверка подсказки кнопки в панели инструментов.

    Args:
        name: имя кнопки
        tooltip: ожидаемый текст подсказки
    """
    self.toolbar.check_button_tooltip(name, tooltip)

check_window_horizontal_scrolling()

Проверка возможности горизонтальной прокрутки.

Returns:

Name Type Description
bool

True если прокрутка возможна

Source code in components\modal_window_component.py
143
144
145
146
147
148
149
def check_window_horizontal_scrolling(self):
    """Проверка возможности горизонтальной прокрутки.

    Returns:
        bool: True если прокрутка возможна
    """
    return self.is_scrollable_horizontally(ModalWindowLocators.MODAL_WINDOW)

check_window_vertical_scrolling()

Проверка возможности вертикальной прокрутки.

Returns:

Name Type Description
bool

True если прокрутка возможна

Source code in components\modal_window_component.py
135
136
137
138
139
140
141
def check_window_vertical_scrolling(self):
    """Проверка возможности вертикальной прокрутки.

    Returns:
        bool: True если прокрутка возможна
    """
    return self.is_scrollable_vertically(ModalWindowLocators.MODAL_WINDOW)

click_button(name)

Нажатие кнопки по имени.

Parameters:

Name Type Description Default
name

имя кнопки

required

Raises:

Type Description
AssertionError

если кнопка не найдена

Source code in components\modal_window_component.py
100
101
102
103
104
105
106
107
108
109
110
111
112
def click_button(self, name):
    """Нажатие кнопки по имени.

    Args:
        name: имя кнопки

    Raises:
        AssertionError: если кнопка не найдена
    """
    button = self.get_button_by_name(name)
    if button is None:
        assert False, f"Button with name '{name}' not found"
    button.click()

click_toolbar_close_button()

Нажатие кнопки закрытия в панели инструментов.

Source code in components\modal_window_component.py
114
115
116
def click_toolbar_close_button(self):
    """Нажатие кнопки закрытия в панели инструментов."""
    self.toolbar.click_button("close")

get_button_by_name(name)

Поиск кнопки по имени.

Parameters:

Name Type Description Default
name

имя кнопки

required

Returns:

Name Type Description
Button Button | None

найденная кнопка или None

Source code in components\modal_window_component.py
86
87
88
89
90
91
92
93
94
95
96
97
98
def get_button_by_name(self, name) -> Button | None:
    """Поиск кнопки по имени.

    Args:
        name: имя кнопки

    Returns:
        Button: найденная кнопка или None
    """
    for button in self.buttons:
        if button.name == name:
            return button
    return None

get_content_item(name)

Получение элемента содержимого по имени.

Parameters:

Name Type Description Default
name

имя элемента

required

Returns:

Type Description

Элемент содержимого или None, если не найден

Source code in components\modal_window_component.py
49
50
51
52
53
54
55
56
57
58
def get_content_item(self, name):
    """Получение элемента содержимого по имени.

    Args:
        name: имя элемента

    Returns:
        Элемент содержимого или None, если не найден
    """
    return self.content_items.get(name)

scroll_window_down()

Прокрутка содержимого окна вниз.

Source code in components\modal_window_component.py
118
119
120
def scroll_window_down(self):
    """Прокрутка содержимого окна вниз."""
    self.scroll_down(ModalWindowLocators.MODAL_WINDOW)

scroll_window_left()

Прокрутка содержимого окна влево.

Source code in components\modal_window_component.py
126
127
128
def scroll_window_left(self):
    """Прокрутка содержимого окна влево."""
    self.scroll_left(ModalWindowLocators.MODAL_WINDOW)

scroll_window_right()

Прокрутка содержимого окна вправо.

Source code in components\modal_window_component.py
130
131
132
def scroll_window_right(self):
    """Прокрутка содержимого окна вправо."""
    self.scroll_right(ModalWindowLocators.MODAL_WINDOW)

scroll_window_up()

Прокрутка содержимого окна вверх.

Source code in components\modal_window_component.py
122
123
124
def scroll_window_up(self):
    """Прокрутка содержимого окна вверх."""
    self.scroll_up(ModalWindowLocators.MODAL_WINDOW)