Skip to content

LoginPage

LoginPage

Bases: BasePage

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

Атрибуты

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

Source code in pages\login_page.py
12
13
14
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
class LoginPage(BasePage):
    """Класс для работы со страницей авторизации.

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

    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:
        """Выполняет вход в систему.

        Если username/password не указаны, использует значения из Constants.
        Обрабатывает ответ сервера для получения токена доступа.

        Args:
            username: Логин пользователя. Если None, используется значение из Constants.
            password: Пароль пользователя. Если None, используется значение из 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_presence("Неверная пара логин/пароль")
        self.error_alert.check_absence("Неверная пара логин/пароль")

__init__(page)

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

Parameters:

Name Type Description Default
page Page

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

required
Source code in pages\login_page.py
23
24
25
26
27
28
29
30
31
32
33
34
35
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)

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

Если username/password не указаны, использует значения из Constants. Обрабатывает ответ сервера для получения токена доступа.

Parameters:

Name Type Description Default
username str

Логин пользователя. Если None, используется значение из Constants.

None
password str

Пароль пользователя. Если None, используется значение из Constants.

None

Raises:

Type Description
AssertionError

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

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

    Если username/password не указаны, использует значения из Constants.
    Обрабатывает ответ сервера для получения токена доступа.

    Args:
        username: Логин пользователя. Если None, используется значение из Constants.
        password: Пароль пользователя. Если None, используется значение из 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
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
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_presence("Неверная пара логин/пароль")
    self.error_alert.check_absence("Неверная пара логин/пароль")