Skip to content

EventPanelComponent

Модуль компонента панели событий. Содержит класс для работы с элементами панели.

EventPanelComponent

Bases: BaseComponent

Компонент панели событий. Предоставляет методы для взаимодействия с ней.

Source code in components\eventbar_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
 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
class EventPanelComponent(BaseComponent):
    """Компонент панели событий. Предоставляет методы для взаимодействия с ней."""

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

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

        super().__init__(page)

        self.states_tab = TabButton(page, self.page.locator(EventPanelLocators.TAB_STATES), "states_tab")
        self.actions_tab = TabButton(page, self.page.locator(EventPanelLocators.TAB_ACTIONS), "actions_tab")
        self.events_tab = TabButton(page, self.page.locator(EventPanelLocators.TAB_EVENTS), "events_tab")
        self.maintenance_tab = TabButton(page, self.page.locator(EventPanelLocators.TAB_MAINTENANCE), "maintenance_tab")
        self.system_log_tab = TabButton(page, self.page.locator(EventPanelLocators.TAB_SYSTEM_LOG), "system_log_tab")

        self.unknown_reason_button = TooltipButton(page, self.page.locator(EventPanelLocators.BUTTONS_EVENT).nth(0), "unknown_reason_button")
        self.warning_button = TooltipButton(page, self.page.locator(EventPanelLocators.BUTTONS_EVENT).nth(1), "warning_button")
        self.damage_button = TooltipButton(page, self.page.locator(EventPanelLocators.BUTTONS_EVENT).nth(2), "damage_button")
        self.failure_button = TooltipButton(page, self.page.locator(EventPanelLocators.BUTTONS_EVENT).nth(3), "failure_button")

        buttons_service_locators = self.page.locator(EventPanelLocators.BUTTONS_SERVICE).get_by_role("button").all()
        self.search_button = Button(page, buttons_service_locators[0], "search_button")
        self.user_button = Button(page, buttons_service_locators[1], "user_button")

        self.user_card = UserCard(page)

    # Действия:
    def click_expand_less_button(self) -> None:
        """Выполняет нажатие кнопки галочка вверх."""

        button_locator = self.page.locator(EventPanelLocators.TAB_EXPAND_BUTTONS).\
                         get_by_role("button").filter(has_text='expand_less')
        button_locator.click()

    def click_expand_more_button(self) -> None:
        """Выполняет нажатие кнопки галочка вниз."""

        button_locator = self.page.locator(EventPanelLocators.TAB_EXPAND_BUTTONS).\
                         get_by_role("button").filter(has_text='expand_more')
        button_locator.click()

    def click_user_button(self) -> UserCard:
        """Выполняет нажатие кнопки пользователя."""

        self.should_be_user_button()
        self.user_button.click()
        return self.user_card

    def do_logout(self) -> None:
        """Выполняет выход из системы."""

        user_card = self.click_user_button()
        user_card.click_logout_button()

    def get_event_tooltip_texts(self) -> []:
        """Возвращает список текстов всплывающих подсказок кнопок счетчиков событий."""

        tooltip_texts = []

        tooltip_texts.append(self.unknown_reason_button.get_tooltip_text())
        tooltip_texts.append(self.warning_button.get_tooltip_text())
        tooltip_texts.append(self.damage_button.get_tooltip_text())
        tooltip_texts.append(self.failure_button.get_tooltip_text())

        return tooltip_texts

    def get_event_button_values(self) -> {}:
        """Возвращает набор значений кнопок счетчиков событий."""

        event_buttons_texts = {}

        event_buttons_texts['Неизвестно'] = self.unknown_reason_button.get_text(0)
        event_buttons_texts['Предупреждение'] = self.warning_button.get_text(0)
        event_buttons_texts['Повреждение'] = self.damage_button.get_text(0)
        event_buttons_texts['Авария'] = self.failure_button.get_text(0)

        return event_buttons_texts

    def get_panel_position(self) -> str:
        """Возвращает текущее положение панели событий относительно страницы: "top", "center","bottom"."""

        style_attr = self.page.locator(EventPanelLocators.AREA_EVENTS).get_attribute("style")
        position = "bottom"

        if style_attr.find("display: none;") == -1:
            height = style_attr.replace("height: ","").replace(";", "")
            if height == "100%":
                position = "top"
            else:
                position = "center"

        return position

    # Проверки:
    def check_expand_less_button(self) -> bool:
        """Проверяет наличие кнопки галочка вверх."""

        try:
            _ = self.page.locator(EventPanelLocators.TAB_EXPAND_BUTTONS).\
                          get_by_role("button").filter(has_text='expand_less')
        except TimeoutError:
            return False
        return True

    def check_expand_more_button(self) -> bool:
        """Проверяет наличие кнопки галочка вниз"""

        try:
            _ = self.page.locator(EventPanelLocators.TAB_EXPAND_BUTTONS).\
                          get_by_role("button").filter(has_text='expand_more')
        except TimeoutError:
            return False
        return True

    def check_user_card_content(self):
        """Проверяет наличие и корректность элементов карточки пользователя."""

        self.user_card.check_content()

    def should_be_user_button(self) -> None:
        """Проверяет наличие кнопки пользователя."""

        self.user_button.check_visibility("User button is missing on event panel")

    def should_be_search_button(self) -> None:
        """Проверяет наличие кнопки поиска."""

        self.search_button.check_visibility("Search button is missing on event panel")

    def should_be_tab_buttons(self) -> None:
        """Проверяет наличие блока tab-кнопок Состояния, Действия, События, Обслуживание, Системный журнал."""

        self.states_tab.check_have_text('Состояния', "Tab button with text Состояния is missing on event panel")
        self.actions_tab.check_have_text('Действия',"Tab button with text Действия is missing on event panel")
        self.events_tab.check_have_text('События', "Tab button with text События is missing on event panel")
        self.maintenance_tab.check_have_text('Обслуживание', "Tab button with text Обслуживание is missing on event panel")
        self.system_log_tab.check_have_text('Системный журнал', "Tab button with text Системный журнал is missing on event panel")

    def should_be_event_buttons(self) -> None:
        """Проверяет наличие блока кнопок-счетчиков событий."""

        self.unknown_reason_button.check_visibility("Unknown reason event button is missing on event panel")
        self.warning_button.check_visibility("Warning event button is missing on event panel")
        self.damage_button.check_visibility("Damage event button is missing on event panel")
        self.failure_button.check_visibility("Failure event button is missing on event panel")

__init__(page)

Инициализирует компонент панели событий.

Parameters:

Name Type Description Default
page Page

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

required
Source code in components\eventbar_component.py
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
def __init__(self, page: Page):
    """Инициализирует компонент панели событий.

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

    super().__init__(page)

    self.states_tab = TabButton(page, self.page.locator(EventPanelLocators.TAB_STATES), "states_tab")
    self.actions_tab = TabButton(page, self.page.locator(EventPanelLocators.TAB_ACTIONS), "actions_tab")
    self.events_tab = TabButton(page, self.page.locator(EventPanelLocators.TAB_EVENTS), "events_tab")
    self.maintenance_tab = TabButton(page, self.page.locator(EventPanelLocators.TAB_MAINTENANCE), "maintenance_tab")
    self.system_log_tab = TabButton(page, self.page.locator(EventPanelLocators.TAB_SYSTEM_LOG), "system_log_tab")

    self.unknown_reason_button = TooltipButton(page, self.page.locator(EventPanelLocators.BUTTONS_EVENT).nth(0), "unknown_reason_button")
    self.warning_button = TooltipButton(page, self.page.locator(EventPanelLocators.BUTTONS_EVENT).nth(1), "warning_button")
    self.damage_button = TooltipButton(page, self.page.locator(EventPanelLocators.BUTTONS_EVENT).nth(2), "damage_button")
    self.failure_button = TooltipButton(page, self.page.locator(EventPanelLocators.BUTTONS_EVENT).nth(3), "failure_button")

    buttons_service_locators = self.page.locator(EventPanelLocators.BUTTONS_SERVICE).get_by_role("button").all()
    self.search_button = Button(page, buttons_service_locators[0], "search_button")
    self.user_button = Button(page, buttons_service_locators[1], "user_button")

    self.user_card = UserCard(page)

check_expand_less_button()

Проверяет наличие кнопки галочка вверх.

Source code in components\eventbar_component.py
112
113
114
115
116
117
118
119
120
def check_expand_less_button(self) -> bool:
    """Проверяет наличие кнопки галочка вверх."""

    try:
        _ = self.page.locator(EventPanelLocators.TAB_EXPAND_BUTTONS).\
                      get_by_role("button").filter(has_text='expand_less')
    except TimeoutError:
        return False
    return True

check_expand_more_button()

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

Source code in components\eventbar_component.py
122
123
124
125
126
127
128
129
130
def check_expand_more_button(self) -> bool:
    """Проверяет наличие кнопки галочка вниз"""

    try:
        _ = self.page.locator(EventPanelLocators.TAB_EXPAND_BUTTONS).\
                      get_by_role("button").filter(has_text='expand_more')
    except TimeoutError:
        return False
    return True

check_user_card_content()

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

Source code in components\eventbar_component.py
132
133
134
135
def check_user_card_content(self):
    """Проверяет наличие и корректность элементов карточки пользователя."""

    self.user_card.check_content()

click_expand_less_button()

Выполняет нажатие кнопки галочка вверх.

Source code in components\eventbar_component.py
45
46
47
48
49
50
def click_expand_less_button(self) -> None:
    """Выполняет нажатие кнопки галочка вверх."""

    button_locator = self.page.locator(EventPanelLocators.TAB_EXPAND_BUTTONS).\
                     get_by_role("button").filter(has_text='expand_less')
    button_locator.click()

click_expand_more_button()

Выполняет нажатие кнопки галочка вниз.

Source code in components\eventbar_component.py
52
53
54
55
56
57
def click_expand_more_button(self) -> None:
    """Выполняет нажатие кнопки галочка вниз."""

    button_locator = self.page.locator(EventPanelLocators.TAB_EXPAND_BUTTONS).\
                     get_by_role("button").filter(has_text='expand_more')
    button_locator.click()

click_user_button()

Выполняет нажатие кнопки пользователя.

Source code in components\eventbar_component.py
59
60
61
62
63
64
def click_user_button(self) -> UserCard:
    """Выполняет нажатие кнопки пользователя."""

    self.should_be_user_button()
    self.user_button.click()
    return self.user_card

do_logout()

Выполняет выход из системы.

Source code in components\eventbar_component.py
66
67
68
69
70
def do_logout(self) -> None:
    """Выполняет выход из системы."""

    user_card = self.click_user_button()
    user_card.click_logout_button()

get_event_button_values()

Возвращает набор значений кнопок счетчиков событий.

Source code in components\eventbar_component.py
84
85
86
87
88
89
90
91
92
93
94
def get_event_button_values(self) -> {}:
    """Возвращает набор значений кнопок счетчиков событий."""

    event_buttons_texts = {}

    event_buttons_texts['Неизвестно'] = self.unknown_reason_button.get_text(0)
    event_buttons_texts['Предупреждение'] = self.warning_button.get_text(0)
    event_buttons_texts['Повреждение'] = self.damage_button.get_text(0)
    event_buttons_texts['Авария'] = self.failure_button.get_text(0)

    return event_buttons_texts

get_event_tooltip_texts()

Возвращает список текстов всплывающих подсказок кнопок счетчиков событий.

Source code in components\eventbar_component.py
72
73
74
75
76
77
78
79
80
81
82
def get_event_tooltip_texts(self) -> []:
    """Возвращает список текстов всплывающих подсказок кнопок счетчиков событий."""

    tooltip_texts = []

    tooltip_texts.append(self.unknown_reason_button.get_tooltip_text())
    tooltip_texts.append(self.warning_button.get_tooltip_text())
    tooltip_texts.append(self.damage_button.get_tooltip_text())
    tooltip_texts.append(self.failure_button.get_tooltip_text())

    return tooltip_texts

get_panel_position()

Возвращает текущее положение панели событий относительно страницы: "top", "center","bottom".

Source code in components\eventbar_component.py
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
def get_panel_position(self) -> str:
    """Возвращает текущее положение панели событий относительно страницы: "top", "center","bottom"."""

    style_attr = self.page.locator(EventPanelLocators.AREA_EVENTS).get_attribute("style")
    position = "bottom"

    if style_attr.find("display: none;") == -1:
        height = style_attr.replace("height: ","").replace(";", "")
        if height == "100%":
            position = "top"
        else:
            position = "center"

    return position

should_be_event_buttons()

Проверяет наличие блока кнопок-счетчиков событий.

Source code in components\eventbar_component.py
156
157
158
159
160
161
162
def should_be_event_buttons(self) -> None:
    """Проверяет наличие блока кнопок-счетчиков событий."""

    self.unknown_reason_button.check_visibility("Unknown reason event button is missing on event panel")
    self.warning_button.check_visibility("Warning event button is missing on event panel")
    self.damage_button.check_visibility("Damage event button is missing on event panel")
    self.failure_button.check_visibility("Failure event button is missing on event panel")

should_be_search_button()

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

Source code in components\eventbar_component.py
142
143
144
145
def should_be_search_button(self) -> None:
    """Проверяет наличие кнопки поиска."""

    self.search_button.check_visibility("Search button is missing on event panel")

should_be_tab_buttons()

Проверяет наличие блока tab-кнопок Состояния, Действия, События, Обслуживание, Системный журнал.

Source code in components\eventbar_component.py
147
148
149
150
151
152
153
154
def should_be_tab_buttons(self) -> None:
    """Проверяет наличие блока tab-кнопок Состояния, Действия, События, Обслуживание, Системный журнал."""

    self.states_tab.check_have_text('Состояния', "Tab button with text Состояния is missing on event panel")
    self.actions_tab.check_have_text('Действия',"Tab button with text Действия is missing on event panel")
    self.events_tab.check_have_text('События', "Tab button with text События is missing on event panel")
    self.maintenance_tab.check_have_text('Обслуживание', "Tab button with text Обслуживание is missing on event panel")
    self.system_log_tab.check_have_text('Системный журнал', "Tab button with text Системный журнал is missing on event panel")

should_be_user_button()

Проверяет наличие кнопки пользователя.

Source code in components\eventbar_component.py
137
138
139
140
def should_be_user_button(self) -> None:
    """Проверяет наличие кнопки пользователя."""

    self.user_button.check_visibility("User button is missing on event panel")