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

Skip to content

# LoginPage

Модуль страницы авторизации.

Содержит класс LoginPage для работы с элементами страницы входа в систему. Использует Playwright для взаимодействия с UI и обработки ответов сервера.

## `LoginPage`

Bases: `BasePage`

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

Атрибуты

page: Экземпляр страницы Playwright. login_input: Поле ввода логина. password_input: Поле ввода пароля. login_button: Кнопка входа. error_alert: Компонент алерта с ошибкой.

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

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

        Атрибуты:
            page: Экземпляр страницы Playwright.
            login_input: Поле ввода логина.
            password_input: Поле ввода пароля.
            login_button: Кнопка входа.
            error_alert: Компонент алерта с ошибкой.
        """

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

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

            super().__init__(page)

            self.login_input = TextInput(page, page.get_by_label("Имя пользователя"), "login input")
            self.password_input = TextInput(page, page.get_by_label("Пароль"), "password input")
            self.login_button = Button(page, page.get_by_role("button"), "login button")

            self.error_alert = AlertComponent(page, "error")

        def do_login(self, username: str = None, password: str = None) -> None:
            """Выполняет вход в систему.

            Использует переданные учетные данные или значения из Constants.
            Обрабатывает ответ сервера для получения токена доступа.

            Args:
                username: Логин пользователя. По умолчанию из Constants.
                password: Пароль пользователя. По умолчанию из Constants.

            Raises:
                AssertionError: Если после входа открылась неожиданная страница.
            """

            def handle_response(response):
                if "login" in response.url:
                    response_body = self.get_response_body(response)
                    if response_body:
                        token = response_body.get("access_token")
                        host.set_access_token(token)

            self.page.on("response", handle_response)

            self.open("")

            # Используем переданные значения или значения по умолчанию из Constants
            actual_username = username if username is not None else Constants.login
            actual_password = password if password is not None else Constants.password

            self.login_input.clear()
            self.login_input.input_value(actual_username)

            self.password_input.clear()
            self.password_input.input_value(actual_password)

            self.login_button.click()

            self.check_URL("dashboard", "An unexpected page has been opened")

        def do_unsuccessful_login(self, username: str = "someuser", password: str = "password") -> None:
            """Выполняет попытку входа с неверными учетными данными.

            Проверяет наличие сообщения об ошибке. Можно передать свои данные
            или использовать значения по умолчанию.

            Args:
                username: Неверный логин. По умолчанию "someuser".
                password: Неверный пароль. По умолчанию "password".
            """

            self.open("")

            self.login_input.clear()
            self.login_input.input_value(username)

            self.password_input.clear()
            self.password_input.input_value(password)

            self.login_button.click()

            self.error_alert.check_alert_presence("Неверная пара логин/пароль")
            self.error_alert.check_alert_absence("Неверная пара логин/пароль")

### `__init__(page)`

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

Parameters:

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

Source code in `pages\login_page.py`

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

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

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

        super().__init__(page)

        self.login_input = TextInput(page, page.get_by_label("Имя пользователя"), "login input")
        self.password_input = TextInput(page, page.get_by_label("Пароль"), "password input")
        self.login_button = Button(page, page.get_by_role("button"), "login button")

        self.error_alert = AlertComponent(page, "error")

### `do_login(username=None, password=None)`

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

Использует переданные учетные данные или значения из Constants. Обрабатывает ответ сервера для получения токена доступа.

Parameters:

Name | Type | Description | Default
--- | --- | --- | ---
`username` | `str` | Логин пользователя. По умолчанию из Constants. | `None`
`password` | `str` | Пароль пользователя. По умолчанию из Constants. | `None`

Raises:

Type | Description
--- | ---
`AssertionError` | Если после входа открылась неожиданная страница.

Source code in `pages\login_page.py`

    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

    def do_login(self, username: str = None, password: str = None) -> None:
        """Выполняет вход в систему.

        Использует переданные учетные данные или значения из Constants.
        Обрабатывает ответ сервера для получения токена доступа.

        Args:
            username: Логин пользователя. По умолчанию из Constants.
            password: Пароль пользователя. По умолчанию из Constants.

        Raises:
            AssertionError: Если после входа открылась неожиданная страница.
        """

        def handle_response(response):
            if "login" in response.url:
                response_body = self.get_response_body(response)
                if response_body:
                    token = response_body.get("access_token")
                    host.set_access_token(token)

        self.page.on("response", handle_response)

        self.open("")

        # Используем переданные значения или значения по умолчанию из Constants
        actual_username = username if username is not None else Constants.login
        actual_password = password if password is not None else Constants.password

        self.login_input.clear()
        self.login_input.input_value(actual_username)

        self.password_input.clear()
        self.password_input.input_value(actual_password)

        self.login_button.click()

        self.check_URL("dashboard", "An unexpected page has been opened")

### `do_unsuccessful_login(username='someuser', password='password')`

Выполняет попытку входа с неверными учетными данными.

Проверяет наличие сообщения об ошибке. Можно передать свои данные или использовать значения по умолчанию.

Parameters:

Name | Type | Description | Default
--- | --- | --- | ---
`username` | `str` | Неверный логин. По умолчанию "someuser". | `'someuser'`
`password` | `str` | Неверный пароль. По умолчанию "password". | `'password'`

Source code in `pages\login_page.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 do_unsuccessful_login(self, username: str = "someuser", password: str = "password") -> None:
        """Выполняет попытку входа с неверными учетными данными.

        Проверяет наличие сообщения об ошибке. Можно передать свои данные
        или использовать значения по умолчанию.

        Args:
            username: Неверный логин. По умолчанию "someuser".
            password: Неверный пароль. По умолчанию "password".
        """

        self.open("")

        self.login_input.clear()
        self.login_input.input_value(username)

        self.password_input.clear()
        self.password_input.input_value(password)

        self.login_button.click()

        self.error_alert.check_alert_presence("Неверная пара логин/пароль")
        self.error_alert.check_alert_absence("Неверная пара логин/пароль")