# MainPage - Документация тестов eNODE-Мониторинг

Skip to content

# MainPage

Модуль главной страницы приложения.

Содержит класс MainPage для работы с элементами главной страницы. Включает взаимодействие с панелью навигации, кнопками и карточкой пользователя.

## `MainPage`

Bases: `BasePage`

Класс для работы с главной страницей приложения.

Атрибуты

page: Экземпляр страницы Playwright. navigation_panel: Компонент панели навигации. user_button: Кнопка пользователя. user_card: Карточка пользователя.

Source code in `pages\main_page.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

    class MainPage(BasePage):
        """Класс для работы с главной страницей приложения.

        Атрибуты:
            page: Экземпляр страницы Playwright.
            navigation_panel: Компонент панели навигации.
            user_button: Кнопка пользователя.
            user_card: Карточка пользователя.
        """

        def __init__(self, page: Page) -> None:
            """Инициализирует элементы главной страницы.

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

            super().__init__(page)

            self.navigation_panel = NavigationPanelComponent(page)

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

            self.user_card = CardComponent(page)

        # Действия:
        def click_main_navigation_panel_item(self, item_name: str) -> None:
            """Кликает по элементу основной панели навигации.

            Args:
                item_name: Название элемента для клика.
            """

            self.navigation_panel.click_item(NavigationPanelLocators.PANEL_MAIN, item_name)

        def click_configuration_navigation_panel_item(self, item_name: str) -> None:
            """Кликает по элементу подраздела 'Конфигурация'.

            Args:
                item_name: Название элемента для клика.
            """

            self.navigation_panel.click_sub_item(NavigationPanelLocators.PANEL_MAIN, 1, item_name)

        def click_maintenance_navigation_panel_item(self, item_name: str) -> None:
            """Кликает по элементу подраздела 'Обслуживание'.

            Args:
                item_name: Название элемента для клика.
            """

            self.navigation_panel.click_sub_item(NavigationPanelLocators.PANEL_MAIN, 2, item_name)

        def click_user_button(self) -> None:
            """Кликает по кнопке пользователя."""

            self.user_button.click()

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

            self.should_be_user_button()
            self.click_user_button()
            self.user_card.click_logout_button()

        def scroll_navigation_panel_up(self) -> None:
            """Прокручивает панель навигации вверх."""

            self.navigation_panel.scroll_up(NavigationPanelLocators.PANEL_SCROLL_CONTAINER)

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

            self.navigation_panel.scroll_down(NavigationPanelLocators.PANEL_SCROLL_CONTAINER)

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

            self.navigation_panel.check_presence(
                NavigationPanelLocators.PANEL_MAIN,
                "Navigation panel is missing"
            )

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

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

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

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

            return self.navigation_panel.is_scrollable_vertically(
                NavigationPanelLocators.PANEL_SCROLL_CONTAINER
            )

        def check_navigation_panel_item_visibility(self, item_name: str) -> None:
            """Проверяет видимость элемента в панели навигации.

            Args:
                item_name: Название элемента для проверки.
            """

            self.navigation_panel.check_item_visibility(
                NavigationPanelLocators.PANEL_MAIN,
                item_name
            )

### `__init__(page)`

Инициализирует элементы главной страницы.

Parameters:

Name | Type | Description | Default
--- | --- | --- | ---
`page` | `Page` | Экземпляр страницы Playwright. | required

Source code in `pages\main_page.py`

    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40

    def __init__(self, page: Page) -> None:
        """Инициализирует элементы главной страницы.

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

        super().__init__(page)

        self.navigation_panel = NavigationPanelComponent(page)

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

        self.user_card = CardComponent(page)

### `check_navigation_panel_item_visibility(item_name)`

Проверяет видимость элемента в панели навигации.

Parameters:

Name | Type | Description | Default
--- | --- | --- | ---
`item_name` | `str` | Название элемента для проверки. | required

Source code in `pages\main_page.py`

    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127

    def check_navigation_panel_item_visibility(self, item_name: str) -> None:
        """Проверяет видимость элемента в панели навигации.

        Args:
            item_name: Название элемента для проверки.
        """

        self.navigation_panel.check_item_visibility(
            NavigationPanelLocators.PANEL_MAIN,
            item_name
        )

### `check_navigation_panel_verticall_scrolling()`

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

Returns:

Name | Type | Description
--- | --- | ---
`bool` | `bool` | True если прокрутка возможна, иначе False.

Source code in `pages\main_page.py`

    106
    107
    108
    109
    110
    111
    112
    113
    114
    115

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

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

        return self.navigation_panel.is_scrollable_vertically(
            NavigationPanelLocators.PANEL_SCROLL_CONTAINER
        )

### `click_configuration_navigation_panel_item(item_name)`

Кликает по элементу подраздела 'Конфигурация'.

Parameters:

Name | Type | Description | Default
--- | --- | --- | ---
`item_name` | `str` | Название элемента для клика. | required

Source code in `pages\main_page.py`

    52
    53
    54
    55
    56
    57
    58
    59

    def click_configuration_navigation_panel_item(self, item_name: str) -> None:
        """Кликает по элементу подраздела 'Конфигурация'.

        Args:
            item_name: Название элемента для клика.
        """

        self.navigation_panel.click_sub_item(NavigationPanelLocators.PANEL_MAIN, 1, item_name)

### `click_main_navigation_panel_item(item_name)`

Кликает по элементу основной панели навигации.

Parameters:

Name | Type | Description | Default
--- | --- | --- | ---
`item_name` | `str` | Название элемента для клика. | required

Source code in `pages\main_page.py`

    43
    44
    45
    46
    47
    48
    49
    50

    def click_main_navigation_panel_item(self, item_name: str) -> None:
        """Кликает по элементу основной панели навигации.

        Args:
            item_name: Название элемента для клика.
        """

        self.navigation_panel.click_item(NavigationPanelLocators.PANEL_MAIN, item_name)

### `click_maintenance_navigation_panel_item(item_name)`

Кликает по элементу подраздела 'Обслуживание'.

Parameters:

Name | Type | Description | Default
--- | --- | --- | ---
`item_name` | `str` | Название элемента для клика. | required

Source code in `pages\main_page.py`

    61
    62
    63
    64
    65
    66
    67
    68

    def click_maintenance_navigation_panel_item(self, item_name: str) -> None:
        """Кликает по элементу подраздела 'Обслуживание'.

        Args:
            item_name: Название элемента для клика.
        """

        self.navigation_panel.click_sub_item(NavigationPanelLocators.PANEL_MAIN, 2, item_name)

### `click_user_button()`

Кликает по кнопке пользователя.

Source code in `pages\main_page.py`

    70
    71
    72
    73

    def click_user_button(self) -> None:
        """Кликает по кнопке пользователя."""

        self.user_button.click()

### `do_logout()`

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

Source code in `pages\main_page.py`

    75
    76
    77
    78
    79
    80

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

        self.should_be_user_button()
        self.click_user_button()
        self.user_card.click_logout_button()

### `scroll_navigation_panel_down()`

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

Source code in `pages\main_page.py`

    87
    88
    89
    90

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

        self.navigation_panel.scroll_down(NavigationPanelLocators.PANEL_SCROLL_CONTAINER)

### `scroll_navigation_panel_up()`

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

Source code in `pages\main_page.py`

    82
    83
    84
    85

    def scroll_navigation_panel_up(self) -> None:
        """Прокручивает панель навигации вверх."""

        self.navigation_panel.scroll_up(NavigationPanelLocators.PANEL_SCROLL_CONTAINER)

### `should_be_navigation_panel()`

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

Source code in `pages\main_page.py`

    93
    94
    95
    96
    97
    98
    99

    def should_be_navigation_panel(self) -> None:
        """Проверяет наличие панели навигации."""

        self.navigation_panel.check_presence(
            NavigationPanelLocators.PANEL_MAIN,
            "Navigation panel is missing"
        )

### `should_be_user_button()`

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

Source code in `pages\main_page.py`

    101
    102
    103
    104

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

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