Модуль страницы авторизации.
Содержит класс LoginPage для работы с элементами страницы входа в систему.
Использует Playwright для взаимодействия с UI и обработки ответов сервера.
LoginPage
Bases: BasePage
Класс для работы со страницей авторизации.
Атрибуты
page: Экземпляр страницы Playwright.
login_input: Поле ввода логина.
password_input: Поле ввода пароля.
login_button: Кнопка входа.
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
103
104
105 | class LoginPage(BasePage):
"""Класс для работы со страницей авторизации.
Атрибуты:
page: Экземпляр страницы Playwright.
login_input: Поле ввода логина.
password_input: Поле ввода пароля.
login_button: Кнопка входа.
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.alert = AlertComponent(page)
# Действия:
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:
host.set_current_user_credential(response_body)
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()
alert_type = self.alert.get_alert_type()
assert alert_type=="error", f"Expected error alert, but got {alert_type} alert"
self.alert.check_alert_presence("Неверная пара логин/пароль")
self.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.alert = AlertComponent(page)
|
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
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:
host.set_current_user_credential(response_body)
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
103
104
105 | 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()
alert_type = self.alert.get_alert_type()
assert alert_type=="error", f"Expected error alert, but got {alert_type} alert"
self.alert.check_alert_presence("Неверная пара логин/пароль")
self.alert.check_alert_absence("Неверная пара логин/пароль")
|