Skip to content

UserSettingsDialogWindow

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

Содержит класс для работы с диалоговым окном просмотра сессионных данных пользователя через Playwright.

UserSettingsDialogWindow

Bases: BaseComponent

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

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

Source code in components_derived\dialog_user_settings.py
 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
class UserSettingsDialogWindow(BaseComponent):
    """Компонент диалоговое окно просмотра сессионных данных пользователя.

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

    def __init__(self, page: Page):
        """Инициализирует компонент диалоговое окно просмотра сессионных данных пользовател.

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

        super().__init__(page)

        dialog_window_locator = page.locator(UserCardLocators.DIALOG_USER_SETTINGS)

        self.dialog_window_title = Text(page,
                                        dialog_window_locator.\
                                        locator(UserCardLocators.TITLE_DIALOG_USER_SETTINGS),
                                        "dialog window title")
        self.close_button = Button(page,
                                   dialog_window_locator.\
                                   locator(UserCardLocators.HEADER_DIALOG_USER_SETTINGS). \
                                   get_by_role("button"),
                                   "close button")

        self.user_settings_table = TableComponent(page)

    # Действия:
    def click_close_button(self):
        """Нажимает кнопку закрытия окна.

        Выполняет клик по кнопке 'Закрыть' на строке с заголовком окна.
        """

        self.close_button.click()

    def get_delete_button_from_row(self, row_index: int) -> TooltipButton:
        """Возвращает кнопку удаления сеанса для указанной строки.

        Args:
            row_index: Индекс строки в таблице.

        Returns:
            TooltipButton: Кнопка с подсказкой.

        Raises:
            AssertionError: Если строка не найдена.
        """

        row_locator = self.user_settings_table.get_row_locator(
            UserCardLocators.TABLE_WORK_AREA,
            row_index
        )
        assert isinstance(row_locator, Locator), f"Row with index {row_index} is missing"

        button_locator = row_locator.get_by_role("button")
        return TooltipButton(self.page, button_locator, "delete_button")

    # Проверки:
    def check_content(self) -> None:
        """Проверяет содержимое окно просмотра сессионных данных пользователя."""

        self.dialog_window_title.check_have_text("Настройки", \
                                                 "Title 'Настройки' is missing on user settings window top")
        self.close_button.check_visibility("Close button is missing on user settings window top")

        self.should_be_user_settings_table()
        self.check_user_settings_table_content()

    def check_window_absence(self) -> None:
        """Проверка отсутствия окна на странице.

        Raises:
            AssertionError: если окнo присутствует на странице.
        """

        self.check_absence(UserCardLocators.DIALOG_USER_SETTINGS, \
                           "User settings dialog window is present")

    def check_window_visibility(self) -> None:
        """Проверка видимости окна на странице.

        Raises:
            AssertionError: если окнo отсутствует на странице.
        """

        self.check_visibility(UserCardLocators.DIALOG_USER_SETTINGS, \
                              "User settings dialog window is missing")


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


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

        expected_headers = [
            'ПОЛЬЗОВАТЕЛЬ',
            'IP АДРЕС',
            'ВРЕМЯ НАЧАЛА СЕССИИ',
            'ДЕЙСТВИЯ'
        ]

        table_content = self.user_settings_table.read(UserCardLocators.TABLE_WORK_AREA)
        len_table_content = len(table_content)

        if len_table_content == 0:
            assert False, "The contents of the table are missing"

        actual_headers = table_content[0]

        assert actual_headers == expected_headers,\
               f"Expected table headers {expected_headers} are not equal {actual_headers}"

        if len_table_content == 1:
            assert False, "Table body is missing"

        for index in range(len_table_content - 1):
            self.should_be_delete_button_on_user_settings_table_row(index, "Удалить")

    def should_be_user_settings_table(self) -> None:
        """Проверяет наличие таблицы сессионных данных пользователя.

        Raises:
            AssertionError: Если таблица отсутствует.
        """

        self.user_settings_table.check_visibility(
                            UserCardLocators.TABLE_WORK_AREA,
                            "User settings table is missing")

    def should_be_delete_button_on_user_settings_table_row(self,
                                                                row_index: int,
                                                                tooltip: str
                                                               ) -> None:
        """Проверяет наличие кнопки удаления в строке таблицы.

        Args:
            row_index: Индекс проверяемой строки.
            tooltip: Ожидаемый текст подсказки.

        Raises:
            AssertionError: Если кнопка отсутствует или подсказка неверна.
        """

        delete_button = self.get_delete_button_from_row(row_index)

        # Ожидаем исчезновения предыдущих подсказок перед проверкой
        delete_button.wait_for_tooltip_to_disappear()

        delete_button.check_visibility(
            f"Delete session button is missing on {row_index} row"
        )
        delete_button.check_tooltip_with_text(tooltip)

        # Ожидаем исчезновения подсказки после проверки
        delete_button.wait_for_tooltip_to_disappear()

__init__(page)

Инициализирует компонент диалоговое окно просмотра сессионных данных пользовател.

Parameters:

Name Type Description Default
page Page

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

required
Source code in components_derived\dialog_user_settings.py
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
def __init__(self, page: Page):
    """Инициализирует компонент диалоговое окно просмотра сессионных данных пользовател.

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

    super().__init__(page)

    dialog_window_locator = page.locator(UserCardLocators.DIALOG_USER_SETTINGS)

    self.dialog_window_title = Text(page,
                                    dialog_window_locator.\
                                    locator(UserCardLocators.TITLE_DIALOG_USER_SETTINGS),
                                    "dialog window title")
    self.close_button = Button(page,
                               dialog_window_locator.\
                               locator(UserCardLocators.HEADER_DIALOG_USER_SETTINGS). \
                               get_by_role("button"),
                               "close button")

    self.user_settings_table = TableComponent(page)

check_content()

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

Source code in components_derived\dialog_user_settings.py
81
82
83
84
85
86
87
88
89
def check_content(self) -> None:
    """Проверяет содержимое окно просмотра сессионных данных пользователя."""

    self.dialog_window_title.check_have_text("Настройки", \
                                             "Title 'Настройки' is missing on user settings window top")
    self.close_button.check_visibility("Close button is missing on user settings window top")

    self.should_be_user_settings_table()
    self.check_user_settings_table_content()

check_user_settings_table_content()

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

Raises:

Type Description
AssertionError

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

Source code in components_derived\dialog_user_settings.py
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
def check_user_settings_table_content(self) -> None:
    """Проверяет содержимое таблицы сессионных данных пользователя.


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

    expected_headers = [
        'ПОЛЬЗОВАТЕЛЬ',
        'IP АДРЕС',
        'ВРЕМЯ НАЧАЛА СЕССИИ',
        'ДЕЙСТВИЯ'
    ]

    table_content = self.user_settings_table.read(UserCardLocators.TABLE_WORK_AREA)
    len_table_content = len(table_content)

    if len_table_content == 0:
        assert False, "The contents of the table are missing"

    actual_headers = table_content[0]

    assert actual_headers == expected_headers,\
           f"Expected table headers {expected_headers} are not equal {actual_headers}"

    if len_table_content == 1:
        assert False, "Table body is missing"

    for index in range(len_table_content - 1):
        self.should_be_delete_button_on_user_settings_table_row(index, "Удалить")

check_window_absence()

Проверка отсутствия окна на странице.

Raises:

Type Description
AssertionError

если окнo присутствует на странице.

Source code in components_derived\dialog_user_settings.py
91
92
93
94
95
96
97
98
99
def check_window_absence(self) -> None:
    """Проверка отсутствия окна на странице.

    Raises:
        AssertionError: если окнo присутствует на странице.
    """

    self.check_absence(UserCardLocators.DIALOG_USER_SETTINGS, \
                       "User settings dialog window is present")

check_window_visibility()

Проверка видимости окна на странице.

Raises:

Type Description
AssertionError

если окнo отсутствует на странице.

Source code in components_derived\dialog_user_settings.py
101
102
103
104
105
106
107
108
109
def check_window_visibility(self) -> None:
    """Проверка видимости окна на странице.

    Raises:
        AssertionError: если окнo отсутствует на странице.
    """

    self.check_visibility(UserCardLocators.DIALOG_USER_SETTINGS, \
                          "User settings dialog window is missing")

click_close_button()

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

Выполняет клик по кнопке 'Закрыть' на строке с заголовком окна.

Source code in components_derived\dialog_user_settings.py
50
51
52
53
54
55
56
def click_close_button(self):
    """Нажимает кнопку закрытия окна.

    Выполняет клик по кнопке 'Закрыть' на строке с заголовком окна.
    """

    self.close_button.click()

get_delete_button_from_row(row_index)

Возвращает кнопку удаления сеанса для указанной строки.

Parameters:

Name Type Description Default
row_index int

Индекс строки в таблице.

required

Returns:

Name Type Description
TooltipButton TooltipButton

Кнопка с подсказкой.

Raises:

Type Description
AssertionError

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

Source code in components_derived\dialog_user_settings.py
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
def get_delete_button_from_row(self, row_index: int) -> TooltipButton:
    """Возвращает кнопку удаления сеанса для указанной строки.

    Args:
        row_index: Индекс строки в таблице.

    Returns:
        TooltipButton: Кнопка с подсказкой.

    Raises:
        AssertionError: Если строка не найдена.
    """

    row_locator = self.user_settings_table.get_row_locator(
        UserCardLocators.TABLE_WORK_AREA,
        row_index
    )
    assert isinstance(row_locator, Locator), f"Row with index {row_index} is missing"

    button_locator = row_locator.get_by_role("button")
    return TooltipButton(self.page, button_locator, "delete_button")

should_be_delete_button_on_user_settings_table_row(row_index, tooltip)

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

Parameters:

Name Type Description Default
row_index int

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

required
tooltip str

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

required

Raises:

Type Description
AssertionError

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

Source code in components_derived\dialog_user_settings.py
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
def should_be_delete_button_on_user_settings_table_row(self,
                                                            row_index: int,
                                                            tooltip: str
                                                           ) -> None:
    """Проверяет наличие кнопки удаления в строке таблицы.

    Args:
        row_index: Индекс проверяемой строки.
        tooltip: Ожидаемый текст подсказки.

    Raises:
        AssertionError: Если кнопка отсутствует или подсказка неверна.
    """

    delete_button = self.get_delete_button_from_row(row_index)

    # Ожидаем исчезновения предыдущих подсказок перед проверкой
    delete_button.wait_for_tooltip_to_disappear()

    delete_button.check_visibility(
        f"Delete session button is missing on {row_index} row"
    )
    delete_button.check_tooltip_with_text(tooltip)

    # Ожидаем исчезновения подсказки после проверки
    delete_button.wait_for_tooltip_to_disappear()

should_be_user_settings_table()

Проверяет наличие таблицы сессионных данных пользователя.

Raises:

Type Description
AssertionError

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

Source code in components_derived\dialog_user_settings.py
144
145
146
147
148
149
150
151
152
153
def should_be_user_settings_table(self) -> None:
    """Проверяет наличие таблицы сессионных данных пользователя.

    Raises:
        AssertionError: Если таблица отсутствует.
    """

    self.user_settings_table.check_visibility(
                        UserCardLocators.TABLE_WORK_AREA,
                        "User settings table is missing")