Skip to content

# EventPanelComponent

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

## `EventPanelComponent`

Bases: `BaseComponent`

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

Source code in `components\eventbar_component.py`

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

        # Действия:
        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_system_log_tab(self) -> SystemLogEventsContainer:
            """Выполняет нажатие tab-кнопки Системный журнал."""

            self.system_log_tab.check_visibility("System log tab button is missing on event panel")
            self.system_log_tab.click()

            system_log_events = SystemLogEventsContainer(self.page, EventPanelLocators.CONTAINER_SYSTEM_LOG_EVENTS)
            return system_log_events

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

            self.should_be_user_button()
            self.user_button.click()

            user_card = UserCard(self.page)
            return 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 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`

    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    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")

### `check_expand_less_button()`

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

Source code in `components\eventbar_component.py`

    122
    123
    124
    125
    126
    127
    128
    129
    130
    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`

    132
    133
    134
    135
    136
    137
    138
    139
    140
    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

### `click_expand_less_button()`

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

Source code in `components\eventbar_component.py`

    44
    45
    46
    47
    48
    49
    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`

    51
    52
    53
    54
    55
    56
    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_system_log_tab()`

Выполняет нажатие tab-кнопки Системный журнал.

Source code in `components\eventbar_component.py`

    58
    59
    60
    61
    62
    63
    64
    65
    def click_system_log_tab(self) -> SystemLogEventsContainer:
        """Выполняет нажатие tab-кнопки Системный журнал."""

        self.system_log_tab.check_visibility("System log tab button is missing on event panel")
        self.system_log_tab.click()

        system_log_events = SystemLogEventsContainer(self.page, EventPanelLocators.CONTAINER_SYSTEM_LOG_EVENTS)
        return system_log_events

### `click_user_button()`

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

Source code in `components\eventbar_component.py`

    67
    68
    69
    70
    71
    72
    73
    74
    def click_user_button(self) -> UserCard:
        """Выполняет нажатие кнопки пользователя."""

        self.should_be_user_button()
        self.user_button.click()

        user_card = UserCard(self.page)
        return user_card

### `do_logout()`

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

Source code in `components\eventbar_component.py`

    76
    77
    78
    79
    80
    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`

     94
     95
     96
     97
     98
     99
    100
    101
    102
    103
    104
    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`

    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    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`

    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    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`

    161
    162
    163
    164
    165
    166
    167
    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`

    147
    148
    149
    150
    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`

    152
    153
    154
    155
    156
    157
    158
    159
    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`

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

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