Skip to content

ZTPTemplatesTab

Модуль вкладки 'Шаблоны' в модуле Zero Touch Provisioning.

Содержит класс ZTPTemplatesTab для работы с таблицей шаблонов. Позволяет проверять состояние и взаимодействовать с элементами вкладки.

ZTPTemplatesTab

Bases: BasePage

Класс для работы с вкладкой 'Шаблоны' в модуле Zero Touch Provisioning.

Предоставляет методы для взаимодействия с таблицей шаблонов, модальными окнами и проверки состояния элементов интерфейса. Включает функциональность для: - Работы с таблицей шаблонов (прокрутка, проверка строк, выделение) - Управления модальными окнами просмотра шаблонов - Сравнения данных UI с API ответами

Parameters:

Name Type Description Default
page Page

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

required
Source code in pages\ztp_templates_tab.py
 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
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
class ZTPTemplatesTab(BasePage):
    """Класс для работы с вкладкой 'Шаблоны' в модуле Zero Touch Provisioning.

    Предоставляет методы для взаимодействия с таблицей шаблонов, модальными окнами
    и проверки состояния элементов интерфейса. Включает функциональность для:
    - Работы с таблицей шаблонов (прокрутка, проверка строк, выделение)
    - Управления модальными окнами просмотра шаблонов
    - Сравнения данных UI с API ответами

    Args:
        page (Page): Экземпляр страницы Playwright.
    """

    def __init__(self, page: Page) -> None:
        """Инициализирует компоненты вкладки 'Шаблоны'."""
        super().__init__(page)

        self.toolbar = ToolbarComponent(page, "Шаблоны")
        self.ztp_templates_table = TableComponent(page)
        self.modal_windows = {}

    def add_modal_window(self, title: str) -> None:
        """Добавляет модальное окно в коллекцию.

        Args:
            title: Заголовок окна.
        """
        self.modal_windows[title] = ViewTemplateModalWindow(self.page, title)

    def get_modal_window(self, title: str) -> ViewTemplateModalWindow:
        """Возвращает модальное окно по заголовку.

        Args:
            title: Заголовок окна.

        Returns:
            ViewTemplateModalWindow: Экземпляр модального окна шаблона.

        Raises:
            AssertionError: Если окно не найдено.
        """
        modal_window = self.modal_windows.get(title)

        if modal_window is None:
            assert False, f"Modal window with title '{title}' not found"
        return modal_window

    def delete_modal_window(self, title: str) -> None:
        """Удаляет модальное окно из коллекции.

        Args:
            title: Заголовок окна.

        Raises:
            AssertionError: Если окно не найдено.
        """
        if self.modal_windows.get(title) is None:
            assert False, f"Modal window with title '{title}' not found"
        self.modal_windows[title] = None

    def open_template_modal_by_index(self, row_index: int = 0) -> str:
        """Открывает модальное окно шаблона по клику на строку таблицы.

        Args:
            row_index: Индекс строки для клика (по умолчанию 0 - первая строка).

        Returns:
            str: Имя шаблона.
        """
        row_locator = self.ztp_templates_table.get_row_locator(
            TableLocators.TABLE_WORK_AREA, row_index
        )
        row_locator.click()

        # Создаем временный экземпляр модального окна для получения заголовка
        temp_modal = ViewTemplateModalWindow(self.page, "")
        title = temp_modal.toolbar.get_toolbar_title_text(
            ModalWindowLocators.MODAL_WINDOW_TITLE
        )

        # Добавляем модальное окно в коллекцию после открытия
        self.add_modal_window(title)
        return title

    def close_modal_window_by_toolbar_button(self, title: str) -> None:
        """Закрывает модальное окно через кнопку в тулбаре.

        Args:
            title: Заголовок окна.
        """
        modal_window = self.get_modal_window(title)
        modal_window.close_window_by_toolbar_button()
        self.delete_modal_window(title)

    def close_modal_window(self, title: str) -> None:
        """Закрывает модальное окно через кнопку 'Закрыть'.

        Args:
            title: Заголовок окна.
        """
        modal_window = self.get_modal_window(title)
        modal_window.close_window()
        self.delete_modal_window(title)

    def get_rows_count(self) -> int:
        """Возвращает количество строк в таблице (без заголовка).

        Returns:
            int: Количество строк с данными.

        Raises:
            AssertionError: Если таблица пуста.
        """
        return self.ztp_templates_table.get_rows_count(TableLocators.TABLE_WORK_AREA)

    def scroll_templates_table_up(self) -> None:
        """Прокручивает таблицу шаблонов вверх."""
        self.ztp_templates_table.scroll_up(TableLocators.TABLE_SCROLL_CONTAINER)

    def scroll_templates_table_down(self) -> None:
        """Прокручивает таблицу шаблонов вниз."""
        self.ztp_templates_table.scroll_down(TableLocators.TABLE_SCROLL_CONTAINER)

    def scroll_modal_up(self) -> None:
        """Прокручивает содержимое модального окна вверх."""
        temp_modal = ModalWindowComponent(self.page)
        temp_modal.scroll_window_up()

    def scroll_modal_down(self) -> None:
        """Прокручивает содержимое модального окна вниз."""
        temp_modal = ModalWindowComponent(self.page)
        temp_modal.scroll_window_down()

    def check_templates_modal_content(self, title: str) -> None:
        """Проверяет наличие и корректность элементов модального окна шаблона.

        Args:
            title: Имя шаблона для проверки заголовка окна.

        Raises:
            AssertionError: Если элементы окна некорректны.
        """
        modal_window = self.get_modal_window(title)
        modal_window.check_content()

    def check_templates_table_content(self) -> None:
        """Проверяет содержимое таблицы шаблонов.

        Проверяет заголовки и наличие данных в таблице.

        Raises:
            AssertionError: Если таблица пуста или заголовки неверны.
        """
        expected_headers = [
            'Производитель',
            'vendorCode',
            'authentication',
            'deviceType',
            'authenticationOption'
        ]

        self.ztp_templates_table.check_content(TableLocators.TABLE_WORK_AREA, expected_headers)

    def check_templates_table_vertical_scrolling(self) -> bool:
        """Проверяет возможность вертикальной прокрутки таблицы.

        Returns:
            bool: True если прокрутка возможна, иначе False.
        """
        return self.ztp_templates_table.is_scrollable_vertically(
            TableLocators.TABLE_SCROLL_CONTAINER
        )

    def check_templates_table_first_row_visibility(self) -> None:
        """Проверяет видимость первой строки таблицы.

        Raises:
            AssertionError: Если строка не видна.
        """
        self.ztp_templates_table.check_first_row_visibility(TableLocators.TABLE_WORK_AREA)

    def check_templates_table_last_row_visibility(self) -> None:
        """Проверяет видимость последней строки таблицы.

        Raises:
            AssertionError: Если строка не видна.
        """
        self.ztp_templates_table.check_last_row_visibility(TableLocators.TABLE_WORK_AREA)

    def check_templates_table_row_highlighting(self, row_index: int) -> None:
        """Проверяет выделение указанной строки таблицы.

        Args:
            row_index: Индекс проверяемой строки.

        Raises:
            AssertionError: Если строка не выделена.
        """
        self.ztp_templates_table.check_row_highlighting(
            TableLocators.TABLE_WORK_AREA, row_index
        )

    def should_be_toolbar(self) -> None:
        """Проверяет наличие тулбара на вкладке.

        Raises:
            AssertionError: Если тулбар отсутствует.
        """
        self.toolbar.check_toolbar_presence("Toolbar is missing")

    def should_be_templates_table(self) -> None:
        """Проверяет наличие таблицы шаблонов.

        Raises:
            AssertionError: Если таблица отсутствует.
        """
        self.ztp_templates_table.check_visibility(
            TableLocators.TABLE_WORK_AREA, "Templates table is missing"
        )

    def should_be_modal_window(self) -> None:
        """Проверяет наличие модального окна.

        Raises:
            AssertionError: Если модальное окно отсутствует.
        """
        self.ztp_templates_table.check_visibility(
            ModalWindowLocators.MODAL_WINDOW, "Modal window is not visible"
        )

    def should_not_be_modal_window(self) -> None:
        """Проверяет, что модальное окно отсутствует.

        Raises:
            AssertionError: Если модальное окно все еще видно.
        """
        is_visible = self.page.locator(
            ModalWindowLocators.MODAL_WINDOW
        ).is_visible(timeout=1000)
        if is_visible:
            assert False, "Modal window should not be visible"

    def check_modal_vertical_scrolling(self) -> bool:
        """Проверяет возможность вертикального скроллинга в модальном окне.

        Returns:
            bool: True если скроллинг возможен, иначе False.
        """
        temp_modal = ModalWindowComponent(self.page)
        return temp_modal.check_window_vertical_scrolling()

    def verify_template_data_with_api(self, title: str) -> None:
        """Проверяет соответствие данных модального окна данным из API.

        Процесс проверки:
        1. Получает модальное окно по имени шаблона
        2. Извлекает данные из полей ввода модального окна
        3. Отправляет API запрос для получения эталонных данных шаблона
        4. Сравнивает данные из UI с данными из API
        5. Выбрасывает assertion при обнаружении расхождений

        Args:
            title: Имя шаблона для проверки (должно совпадать с id в API).

        Raises:
            AssertionError: Если:
                - Модальное окно не найдено
                - API запрос завершился с ошибкой (status != 200)
                - Обнаружены расхождения между данными UI и API
                - Имя шаблона в модальном окне не соответствует ожидаемому
        """
        # Получаем модальное окно
        modal_window = self.get_modal_window(title)

        # Читаем данные модального окна
        actual_data = modal_window.get_modal_window_data()

        # Читаем данные из API
        encoded_title = title.replace(" ", "%20")
        url = f"e-nms/DHCP/showOptPattern?template={encoded_title}"
        response = self.send_get_api_request(url)

        # Проверяем статус ответа
        if response.status != 200:
            logger.error("API request failed with status: %s", response.status)
            assert False, f"API request failed with status: {response.status}"

        # Извлекаем данные из ответа
        response_data = response.json()
        template_data = response_data['data']

        # Сравниваем actual_data с данными конкретного шаблона
        modal_window.compare_modal_with_api_data(actual_data, template_data, title)

__init__(page)

Инициализирует компоненты вкладки 'Шаблоны'.

Source code in pages\ztp_templates_tab.py
33
34
35
36
37
38
39
def __init__(self, page: Page) -> None:
    """Инициализирует компоненты вкладки 'Шаблоны'."""
    super().__init__(page)

    self.toolbar = ToolbarComponent(page, "Шаблоны")
    self.ztp_templates_table = TableComponent(page)
    self.modal_windows = {}

add_modal_window(title)

Добавляет модальное окно в коллекцию.

Parameters:

Name Type Description Default
title str

Заголовок окна.

required
Source code in pages\ztp_templates_tab.py
41
42
43
44
45
46
47
def add_modal_window(self, title: str) -> None:
    """Добавляет модальное окно в коллекцию.

    Args:
        title: Заголовок окна.
    """
    self.modal_windows[title] = ViewTemplateModalWindow(self.page, title)

check_modal_vertical_scrolling()

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

Returns:

Name Type Description
bool bool

True если скроллинг возможен, иначе False.

Source code in pages\ztp_templates_tab.py
262
263
264
265
266
267
268
269
def check_modal_vertical_scrolling(self) -> bool:
    """Проверяет возможность вертикального скроллинга в модальном окне.

    Returns:
        bool: True если скроллинг возможен, иначе False.
    """
    temp_modal = ModalWindowComponent(self.page)
    return temp_modal.check_window_vertical_scrolling()

check_templates_modal_content(title)

Проверяет наличие и корректность элементов модального окна шаблона.

Parameters:

Name Type Description Default
title str

Имя шаблона для проверки заголовка окна.

required

Raises:

Type Description
AssertionError

Если элементы окна некорректны.

Source code in pages\ztp_templates_tab.py
153
154
155
156
157
158
159
160
161
162
163
def check_templates_modal_content(self, title: str) -> None:
    """Проверяет наличие и корректность элементов модального окна шаблона.

    Args:
        title: Имя шаблона для проверки заголовка окна.

    Raises:
        AssertionError: Если элементы окна некорректны.
    """
    modal_window = self.get_modal_window(title)
    modal_window.check_content()

check_templates_table_content()

Проверяет содержимое таблицы шаблонов.

Проверяет заголовки и наличие данных в таблице.

Raises:

Type Description
AssertionError

Если таблица пуста или заголовки неверны.

Source code in pages\ztp_templates_tab.py
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
def check_templates_table_content(self) -> None:
    """Проверяет содержимое таблицы шаблонов.

    Проверяет заголовки и наличие данных в таблице.

    Raises:
        AssertionError: Если таблица пуста или заголовки неверны.
    """
    expected_headers = [
        'Производитель',
        'vendorCode',
        'authentication',
        'deviceType',
        'authenticationOption'
    ]

    self.ztp_templates_table.check_content(TableLocators.TABLE_WORK_AREA, expected_headers)

check_templates_table_first_row_visibility()

Проверяет видимость первой строки таблицы.

Raises:

Type Description
AssertionError

Если строка не видна.

Source code in pages\ztp_templates_tab.py
193
194
195
196
197
198
199
def check_templates_table_first_row_visibility(self) -> None:
    """Проверяет видимость первой строки таблицы.

    Raises:
        AssertionError: Если строка не видна.
    """
    self.ztp_templates_table.check_first_row_visibility(TableLocators.TABLE_WORK_AREA)

check_templates_table_last_row_visibility()

Проверяет видимость последней строки таблицы.

Raises:

Type Description
AssertionError

Если строка не видна.

Source code in pages\ztp_templates_tab.py
201
202
203
204
205
206
207
def check_templates_table_last_row_visibility(self) -> None:
    """Проверяет видимость последней строки таблицы.

    Raises:
        AssertionError: Если строка не видна.
    """
    self.ztp_templates_table.check_last_row_visibility(TableLocators.TABLE_WORK_AREA)

check_templates_table_row_highlighting(row_index)

Проверяет выделение указанной строки таблицы.

Parameters:

Name Type Description Default
row_index int

Индекс проверяемой строки.

required

Raises:

Type Description
AssertionError

Если строка не выделена.

Source code in pages\ztp_templates_tab.py
209
210
211
212
213
214
215
216
217
218
219
220
def check_templates_table_row_highlighting(self, row_index: int) -> None:
    """Проверяет выделение указанной строки таблицы.

    Args:
        row_index: Индекс проверяемой строки.

    Raises:
        AssertionError: Если строка не выделена.
    """
    self.ztp_templates_table.check_row_highlighting(
        TableLocators.TABLE_WORK_AREA, row_index
    )

check_templates_table_vertical_scrolling()

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

Returns:

Name Type Description
bool bool

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

Source code in pages\ztp_templates_tab.py
183
184
185
186
187
188
189
190
191
def check_templates_table_vertical_scrolling(self) -> bool:
    """Проверяет возможность вертикальной прокрутки таблицы.

    Returns:
        bool: True если прокрутка возможна, иначе False.
    """
    return self.ztp_templates_table.is_scrollable_vertically(
        TableLocators.TABLE_SCROLL_CONTAINER
    )

close_modal_window(title)

Закрывает модальное окно через кнопку 'Закрыть'.

Parameters:

Name Type Description Default
title str

Заголовок окна.

required
Source code in pages\ztp_templates_tab.py
114
115
116
117
118
119
120
121
122
def close_modal_window(self, title: str) -> None:
    """Закрывает модальное окно через кнопку 'Закрыть'.

    Args:
        title: Заголовок окна.
    """
    modal_window = self.get_modal_window(title)
    modal_window.close_window()
    self.delete_modal_window(title)

close_modal_window_by_toolbar_button(title)

Закрывает модальное окно через кнопку в тулбаре.

Parameters:

Name Type Description Default
title str

Заголовок окна.

required
Source code in pages\ztp_templates_tab.py
104
105
106
107
108
109
110
111
112
def close_modal_window_by_toolbar_button(self, title: str) -> None:
    """Закрывает модальное окно через кнопку в тулбаре.

    Args:
        title: Заголовок окна.
    """
    modal_window = self.get_modal_window(title)
    modal_window.close_window_by_toolbar_button()
    self.delete_modal_window(title)

delete_modal_window(title)

Удаляет модальное окно из коллекции.

Parameters:

Name Type Description Default
title str

Заголовок окна.

required

Raises:

Type Description
AssertionError

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

Source code in pages\ztp_templates_tab.py
67
68
69
70
71
72
73
74
75
76
77
78
def delete_modal_window(self, title: str) -> None:
    """Удаляет модальное окно из коллекции.

    Args:
        title: Заголовок окна.

    Raises:
        AssertionError: Если окно не найдено.
    """
    if self.modal_windows.get(title) is None:
        assert False, f"Modal window with title '{title}' not found"
    self.modal_windows[title] = None

get_modal_window(title)

Возвращает модальное окно по заголовку.

Parameters:

Name Type Description Default
title str

Заголовок окна.

required

Returns:

Name Type Description
ViewTemplateModalWindow ViewTemplateModalWindow

Экземпляр модального окна шаблона.

Raises:

Type Description
AssertionError

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

Source code in pages\ztp_templates_tab.py
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
def get_modal_window(self, title: str) -> ViewTemplateModalWindow:
    """Возвращает модальное окно по заголовку.

    Args:
        title: Заголовок окна.

    Returns:
        ViewTemplateModalWindow: Экземпляр модального окна шаблона.

    Raises:
        AssertionError: Если окно не найдено.
    """
    modal_window = self.modal_windows.get(title)

    if modal_window is None:
        assert False, f"Modal window with title '{title}' not found"
    return modal_window

get_rows_count()

Возвращает количество строк в таблице (без заголовка).

Returns:

Name Type Description
int int

Количество строк с данными.

Raises:

Type Description
AssertionError

Если таблица пуста.

Source code in pages\ztp_templates_tab.py
124
125
126
127
128
129
130
131
132
133
def get_rows_count(self) -> int:
    """Возвращает количество строк в таблице (без заголовка).

    Returns:
        int: Количество строк с данными.

    Raises:
        AssertionError: Если таблица пуста.
    """
    return self.ztp_templates_table.get_rows_count(TableLocators.TABLE_WORK_AREA)

open_template_modal_by_index(row_index=0)

Открывает модальное окно шаблона по клику на строку таблицы.

Parameters:

Name Type Description Default
row_index int

Индекс строки для клика (по умолчанию 0 - первая строка).

0

Returns:

Name Type Description
str str

Имя шаблона.

Source code in pages\ztp_templates_tab.py
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
def open_template_modal_by_index(self, row_index: int = 0) -> str:
    """Открывает модальное окно шаблона по клику на строку таблицы.

    Args:
        row_index: Индекс строки для клика (по умолчанию 0 - первая строка).

    Returns:
        str: Имя шаблона.
    """
    row_locator = self.ztp_templates_table.get_row_locator(
        TableLocators.TABLE_WORK_AREA, row_index
    )
    row_locator.click()

    # Создаем временный экземпляр модального окна для получения заголовка
    temp_modal = ViewTemplateModalWindow(self.page, "")
    title = temp_modal.toolbar.get_toolbar_title_text(
        ModalWindowLocators.MODAL_WINDOW_TITLE
    )

    # Добавляем модальное окно в коллекцию после открытия
    self.add_modal_window(title)
    return title

scroll_modal_down()

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

Source code in pages\ztp_templates_tab.py
148
149
150
151
def scroll_modal_down(self) -> None:
    """Прокручивает содержимое модального окна вниз."""
    temp_modal = ModalWindowComponent(self.page)
    temp_modal.scroll_window_down()

scroll_modal_up()

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

Source code in pages\ztp_templates_tab.py
143
144
145
146
def scroll_modal_up(self) -> None:
    """Прокручивает содержимое модального окна вверх."""
    temp_modal = ModalWindowComponent(self.page)
    temp_modal.scroll_window_up()

scroll_templates_table_down()

Прокручивает таблицу шаблонов вниз.

Source code in pages\ztp_templates_tab.py
139
140
141
def scroll_templates_table_down(self) -> None:
    """Прокручивает таблицу шаблонов вниз."""
    self.ztp_templates_table.scroll_down(TableLocators.TABLE_SCROLL_CONTAINER)

scroll_templates_table_up()

Прокручивает таблицу шаблонов вверх.

Source code in pages\ztp_templates_tab.py
135
136
137
def scroll_templates_table_up(self) -> None:
    """Прокручивает таблицу шаблонов вверх."""
    self.ztp_templates_table.scroll_up(TableLocators.TABLE_SCROLL_CONTAINER)

should_be_modal_window()

Проверяет наличие модального окна.

Raises:

Type Description
AssertionError

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

Source code in pages\ztp_templates_tab.py
240
241
242
243
244
245
246
247
248
def should_be_modal_window(self) -> None:
    """Проверяет наличие модального окна.

    Raises:
        AssertionError: Если модальное окно отсутствует.
    """
    self.ztp_templates_table.check_visibility(
        ModalWindowLocators.MODAL_WINDOW, "Modal window is not visible"
    )

should_be_templates_table()

Проверяет наличие таблицы шаблонов.

Raises:

Type Description
AssertionError

Если таблица отсутствует.

Source code in pages\ztp_templates_tab.py
230
231
232
233
234
235
236
237
238
def should_be_templates_table(self) -> None:
    """Проверяет наличие таблицы шаблонов.

    Raises:
        AssertionError: Если таблица отсутствует.
    """
    self.ztp_templates_table.check_visibility(
        TableLocators.TABLE_WORK_AREA, "Templates table is missing"
    )

should_be_toolbar()

Проверяет наличие тулбара на вкладке.

Raises:

Type Description
AssertionError

Если тулбар отсутствует.

Source code in pages\ztp_templates_tab.py
222
223
224
225
226
227
228
def should_be_toolbar(self) -> None:
    """Проверяет наличие тулбара на вкладке.

    Raises:
        AssertionError: Если тулбар отсутствует.
    """
    self.toolbar.check_toolbar_presence("Toolbar is missing")

should_not_be_modal_window()

Проверяет, что модальное окно отсутствует.

Raises:

Type Description
AssertionError

Если модальное окно все еще видно.

Source code in pages\ztp_templates_tab.py
250
251
252
253
254
255
256
257
258
259
260
def should_not_be_modal_window(self) -> None:
    """Проверяет, что модальное окно отсутствует.

    Raises:
        AssertionError: Если модальное окно все еще видно.
    """
    is_visible = self.page.locator(
        ModalWindowLocators.MODAL_WINDOW
    ).is_visible(timeout=1000)
    if is_visible:
        assert False, "Modal window should not be visible"

verify_template_data_with_api(title)

Проверяет соответствие данных модального окна данным из API.

Процесс проверки: 1. Получает модальное окно по имени шаблона 2. Извлекает данные из полей ввода модального окна 3. Отправляет API запрос для получения эталонных данных шаблона 4. Сравнивает данные из UI с данными из API 5. Выбрасывает assertion при обнаружении расхождений

Parameters:

Name Type Description Default
title str

Имя шаблона для проверки (должно совпадать с id в API).

required

Raises:

Type Description
AssertionError

Если: - Модальное окно не найдено - API запрос завершился с ошибкой (status != 200) - Обнаружены расхождения между данными UI и API - Имя шаблона в модальном окне не соответствует ожидаемому

Source code in pages\ztp_templates_tab.py
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
def verify_template_data_with_api(self, title: str) -> None:
    """Проверяет соответствие данных модального окна данным из API.

    Процесс проверки:
    1. Получает модальное окно по имени шаблона
    2. Извлекает данные из полей ввода модального окна
    3. Отправляет API запрос для получения эталонных данных шаблона
    4. Сравнивает данные из UI с данными из API
    5. Выбрасывает assertion при обнаружении расхождений

    Args:
        title: Имя шаблона для проверки (должно совпадать с id в API).

    Raises:
        AssertionError: Если:
            - Модальное окно не найдено
            - API запрос завершился с ошибкой (status != 200)
            - Обнаружены расхождения между данными UI и API
            - Имя шаблона в модальном окне не соответствует ожидаемому
    """
    # Получаем модальное окно
    modal_window = self.get_modal_window(title)

    # Читаем данные модального окна
    actual_data = modal_window.get_modal_window_data()

    # Читаем данные из API
    encoded_title = title.replace(" ", "%20")
    url = f"e-nms/DHCP/showOptPattern?template={encoded_title}"
    response = self.send_get_api_request(url)

    # Проверяем статус ответа
    if response.status != 200:
        logger.error("API request failed with status: %s", response.status)
        assert False, f"API request failed with status: {response.status}"

    # Извлекаем данные из ответа
    response_data = response.json()
    template_data = response_data['data']

    # Сравниваем actual_data с данными конкретного шаблона
    modal_window.compare_modal_with_api_data(actual_data, template_data, title)