Перевод локаторов элементов окон работы с пользователями на использование testid
parent
891502d3ca
commit
29d8aa8354
|
|
@ -35,7 +35,6 @@ class AddUserModalWindow(ModalWindowComponent):
|
||||||
super().__init__(page)
|
super().__init__(page)
|
||||||
|
|
||||||
# Локаторы элементов формы
|
# Локаторы элементов формы
|
||||||
text_field_locator = f"//{ModalWindowLocators.TEXT_FIELD_INPUT_FORM_USER_DATA}"
|
|
||||||
input_form_locator = ModalWindowLocators.INPUT_FORM_USER_DATA
|
input_form_locator = ModalWindowLocators.INPUT_FORM_USER_DATA
|
||||||
|
|
||||||
# Настройка заголовка и кнопки закрытия тулбара
|
# Настройка заголовка и кнопки закрытия тулбара
|
||||||
|
|
@ -49,7 +48,7 @@ class AddUserModalWindow(ModalWindowComponent):
|
||||||
self.add_toolbar_title(self.window_title)
|
self.add_toolbar_title(self.window_title)
|
||||||
self.add_toolbar_button(locator_button_toolbar_close, "close")
|
self.add_toolbar_button(locator_button_toolbar_close, "close")
|
||||||
|
|
||||||
elements_locators = self._get_fields_locators(page)
|
elements_locators = self.get_input_fields_locators(page.locator(input_form_locator))
|
||||||
|
|
||||||
# Поле Тип авторизации
|
# Поле Тип авторизации
|
||||||
loc = elements_locators.get("Тип авторизации")
|
loc = elements_locators.get("Тип авторизации")
|
||||||
|
|
@ -58,7 +57,7 @@ class AddUserModalWindow(ModalWindowComponent):
|
||||||
self.add_content_item("auth_type_selector", auth_type_selector)
|
self.add_content_item("auth_type_selector", auth_type_selector)
|
||||||
|
|
||||||
# Поле Имя
|
# Поле Имя
|
||||||
loc = elements_locators.get("Имя").locator(text_field_locator)
|
loc = elements_locators.get("Имя").locator(ModalWindowLocators.INPUT_FORM_USER_DATA_FIELD_NAME)
|
||||||
name_input = TextInput(page, loc, "name_input")
|
name_input = TextInput(page, loc, "name_input")
|
||||||
self.add_content_item("name_input", name_input)
|
self.add_content_item("name_input", name_input)
|
||||||
|
|
||||||
|
|
@ -76,34 +75,34 @@ class AddUserModalWindow(ModalWindowComponent):
|
||||||
# Чекбокс "Блокировка"
|
# Чекбокс "Блокировка"
|
||||||
checkbox_blocking = Checkbox(
|
checkbox_blocking = Checkbox(
|
||||||
page,
|
page,
|
||||||
label_blocking_locator.locator("../..").get_by_role("checkbox"),
|
page.locator(input_form_locator).locator(ModalWindowLocators.INPUT_FORM_USER_DATA_CHECKBOX_BLOCKED),
|
||||||
"blocking"
|
"blocking"
|
||||||
)
|
)
|
||||||
self.add_content_item("blocking_checkbox", checkbox_blocking)
|
self.add_content_item("blocking_checkbox", checkbox_blocking)
|
||||||
|
|
||||||
# Поле Роль
|
# Поле Роль
|
||||||
role_loc = elements_locators.get("Роль").get_by_role("combobox")
|
role_loc = elements_locators.get("Роль").get_by_role("combobox").first
|
||||||
role_input = TextInput(page, role_loc, "role_input")
|
role_input = TextInput(page, role_loc, "role_input")
|
||||||
self.add_content_item("role_input", role_input)
|
self.add_content_item("role_input", role_input)
|
||||||
self.add_content_item("roles_list", DropdownList(page))
|
self.add_content_item("roles_list", DropdownList(page))
|
||||||
|
|
||||||
# Поле Пароль
|
# Поле Пароль
|
||||||
loc = elements_locators.get("Пароль").locator(text_field_locator)
|
loc = elements_locators.get("Пароль").locator(ModalWindowLocators.INPUT_FORM_USER_DATA_FIELD_PASSWORD)
|
||||||
password_input = TextInput(page, loc, "password_input")
|
password_input = TextInput(page, loc, "password_input")
|
||||||
self.add_content_item("password_input", password_input)
|
self.add_content_item("password_input", password_input)
|
||||||
|
|
||||||
# Поле Комментарий
|
# Поле Комментарий
|
||||||
loc = elements_locators.get("Комментарий").locator(text_field_locator)
|
loc = elements_locators.get("Комментарий").locator(ModalWindowLocators.INPUT_FORM_USER_DATA_FIELD_COMMENT)
|
||||||
commentary_input = TextInput(page, loc, "commentary_input")
|
commentary_input = TextInput(page, loc, "commentary_input")
|
||||||
self.add_content_item("commentary_input", commentary_input)
|
self.add_content_item("commentary_input", commentary_input)
|
||||||
|
|
||||||
# Поле E-mail
|
# Поле E-mail
|
||||||
loc = elements_locators.get("E-mail").locator(text_field_locator)
|
loc = elements_locators.get("E-mail").locator(ModalWindowLocators.INPUT_FORM_USER_DATA_FIELD_EMAIL)
|
||||||
email_input = TextInput(page, loc, "email_input")
|
email_input = TextInput(page, loc, "email_input")
|
||||||
self.add_content_item("email_input", email_input)
|
self.add_content_item("email_input", email_input)
|
||||||
|
|
||||||
# Поле Номер для СМС
|
# Поле Номер для СМС
|
||||||
loc = elements_locators.get("Номер для СМС").locator(text_field_locator)
|
loc = elements_locators.get("Номер для СМС").locator(ModalWindowLocators.INPUT_FORM_USER_DATA_FIELD_SMS)
|
||||||
phone_input = TextInput(page, loc, "phone_input")
|
phone_input = TextInput(page, loc, "phone_input")
|
||||||
self.add_content_item("phone_input", phone_input)
|
self.add_content_item("phone_input", phone_input)
|
||||||
|
|
||||||
|
|
@ -120,7 +119,7 @@ class AddUserModalWindow(ModalWindowComponent):
|
||||||
# Чекбокс "Подписка на Push-уведомления"
|
# Чекбокс "Подписка на Push-уведомления"
|
||||||
checkbox_push = Checkbox(
|
checkbox_push = Checkbox(
|
||||||
page,
|
page,
|
||||||
label_push_locator.locator("../..").get_by_role("checkbox"),
|
page.locator(input_form_locator).locator(ModalWindowLocators.INPUT_FORM_USER_DATA_CHECKBOX_PUSH_ACTIVE),
|
||||||
"push_notification"
|
"push_notification"
|
||||||
)
|
)
|
||||||
self.add_content_item("push_notification_checkbox", checkbox_push)
|
self.add_content_item("push_notification_checkbox", checkbox_push)
|
||||||
|
|
@ -192,7 +191,8 @@ class AddUserModalWindow(ModalWindowComponent):
|
||||||
if auth_type == "LDAP":
|
if auth_type == "LDAP":
|
||||||
menu_locator = self.page.locator(ModalWindowLocators.MENU_ACTIVE_INPUT_FORM)
|
menu_locator = self.page.locator(ModalWindowLocators.MENU_ACTIVE_INPUT_FORM)
|
||||||
|
|
||||||
elements_locators = self._get_fields_locators(self.page)
|
elements_locators = self.get_input_fields_locators(
|
||||||
|
self.page.locator(ModalWindowLocators.INPUT_FORM_USER_DATA))
|
||||||
|
|
||||||
# Добавилось поле Группа
|
# Добавилось поле Группа
|
||||||
group_loc = elements_locators.get("Группа").get_by_role("combobox")
|
group_loc = elements_locators.get("Группа").get_by_role("combobox")
|
||||||
|
|
@ -223,7 +223,8 @@ class AddUserModalWindow(ModalWindowComponent):
|
||||||
search_button.click()
|
search_button.click()
|
||||||
|
|
||||||
# Если в группе есть пользователи, открывается новое поле, заново вычисляем локаторы
|
# Если в группе есть пользователи, открывается новое поле, заново вычисляем локаторы
|
||||||
elements_locators = self._get_fields_locators(self.page)
|
elements_locators = self.get_input_fields_locators(
|
||||||
|
self.page.locator(ModalWindowLocators.INPUT_FORM_USER_DATA))
|
||||||
users_ad_loc = elements_locators.get("Пользователи AD")
|
users_ad_loc = elements_locators.get("Пользователи AD")
|
||||||
# users_ad_loc = elements_locators.get("Пользователи LDAP")
|
# users_ad_loc = elements_locators.get("Пользователи LDAP")
|
||||||
assert users_ad_loc, f"Selected group {group_name} is empty. Use another group."
|
assert users_ad_loc, f"Selected group {group_name} is empty. Use another group."
|
||||||
|
|
@ -323,39 +324,28 @@ class AddUserModalWindow(ModalWindowComponent):
|
||||||
def locators_recalculation(self, is_active_directory=False) -> None:
|
def locators_recalculation(self, is_active_directory=False) -> None:
|
||||||
"""Пересчет локаторов полей ввода"""
|
"""Пересчет локаторов полей ввода"""
|
||||||
|
|
||||||
text_field_locator = f"//{ModalWindowLocators.TEXT_FIELD_INPUT_FORM_USER_DATA}"
|
elements_locators = self.get_input_fields_locators(
|
||||||
|
self.page.locator(ModalWindowLocators.INPUT_FORM_USER_DATA))
|
||||||
|
|
||||||
elements_locators = self._get_fields_locators(self.page)
|
new_loc = elements_locators.get("Имя").locator(ModalWindowLocators.INPUT_FORM_USER_DATA_FIELD_NAME)
|
||||||
|
|
||||||
new_loc = elements_locators.get("Имя").locator(text_field_locator)
|
|
||||||
self.get_content_item("name_input").update_locator(new_loc)
|
self.get_content_item("name_input").update_locator(new_loc)
|
||||||
|
|
||||||
if not is_active_directory:
|
if not is_active_directory:
|
||||||
new_loc = elements_locators.get("Пароль").locator(text_field_locator)
|
new_loc = elements_locators.get("Пароль").locator(ModalWindowLocators.INPUT_FORM_USER_DATA_FIELD_PASSWORD)
|
||||||
self.get_content_item("password_input").update_locator(new_loc)
|
self.get_content_item("password_input").update_locator(new_loc)
|
||||||
|
|
||||||
new_loc = elements_locators.get("Роль").get_by_role("combobox")
|
new_loc = elements_locators.get("Роль").get_by_role("combobox").first
|
||||||
self.get_content_item("role_input").update_locator(new_loc)
|
self.get_content_item("role_input").update_locator(new_loc)
|
||||||
|
|
||||||
new_loc = elements_locators.get("Комментарий").locator(text_field_locator)
|
new_loc = elements_locators.get("Комментарий").locator(ModalWindowLocators.INPUT_FORM_USER_DATA_FIELD_COMMENT)
|
||||||
self.get_content_item("commentary_input").update_locator(new_loc)
|
self.get_content_item("commentary_input").update_locator(new_loc)
|
||||||
|
|
||||||
new_loc = elements_locators.get("E-mail").locator(text_field_locator)
|
new_loc = elements_locators.get("E-mail").locator(ModalWindowLocators.INPUT_FORM_USER_DATA_FIELD_EMAIL)
|
||||||
self.get_content_item("email_input").update_locator(new_loc)
|
self.get_content_item("email_input").update_locator(new_loc)
|
||||||
|
|
||||||
new_loc = elements_locators.get("Номер для СМС").locator(text_field_locator)
|
new_loc = elements_locators.get("Номер для СМС").locator(ModalWindowLocators.INPUT_FORM_USER_DATA_FIELD_SMS)
|
||||||
self.get_content_item("phone_input").update_locator(new_loc)
|
self.get_content_item("phone_input").update_locator(new_loc)
|
||||||
|
|
||||||
def _get_fields_locators(self, page) -> dict:
|
|
||||||
fields_locators = {}
|
|
||||||
elements = page.locator(ModalWindowLocators.INPUT_FORM_USER_DATA). \
|
|
||||||
locator("div.v-text-field__slot > input").all()
|
|
||||||
for el in elements:
|
|
||||||
val = el.input_value().strip()
|
|
||||||
if val:
|
|
||||||
fields_locators[val] = el.locator("../ancestor::div[5]")
|
|
||||||
return fields_locators
|
|
||||||
|
|
||||||
# Проверки:
|
# Проверки:
|
||||||
def check_content(self):
|
def check_content(self):
|
||||||
"""Проверяет наличие и корректность всех элементов формы создания локального пользователя.
|
"""Проверяет наличие и корректность всех элементов формы создания локального пользователя.
|
||||||
|
|
@ -419,8 +409,8 @@ class AddUserModalWindow(ModalWindowComponent):
|
||||||
elif name == "roles_list":
|
elif name == "roles_list":
|
||||||
continue
|
continue
|
||||||
else:
|
else:
|
||||||
print(f"check item: {name}")
|
# print(f"check item: {name}")
|
||||||
print(item)
|
# print(item)
|
||||||
item.check_visibility(
|
item.check_visibility(
|
||||||
f"Modal window content item with name '{name}' is missing"
|
f"Modal window content item with name '{name}' is missing"
|
||||||
)
|
)
|
||||||
|
|
@ -443,7 +433,8 @@ class AddUserModalWindow(ModalWindowComponent):
|
||||||
if auth_type_selector:
|
if auth_type_selector:
|
||||||
self.select_auth_type("LDAP")
|
self.select_auth_type("LDAP")
|
||||||
|
|
||||||
elements_locators = self._get_fields_locators(self.page)
|
elements_locators = self.get_input_fields_locators(
|
||||||
|
self.page.locator(ModalWindowLocators.INPUT_FORM_USER_DATA))
|
||||||
|
|
||||||
# Добавилось поле Группа
|
# Добавилось поле Группа
|
||||||
group_loc = elements_locators.get("Группа").get_by_role("combobox")
|
group_loc = elements_locators.get("Группа").get_by_role("combobox")
|
||||||
|
|
|
||||||
|
|
@ -34,8 +34,6 @@ class EditUserModalWindow(ModalWindowComponent):
|
||||||
super().__init__(page)
|
super().__init__(page)
|
||||||
|
|
||||||
# Локаторы элементов формы
|
# Локаторы элементов формы
|
||||||
# text_field_locator = ModalWindowLocators.TEXT_FIELD_INPUT_FORM_USER_DATA
|
|
||||||
text_field_locator = f"xpath={ModalWindowLocators.TEXT_FIELD_INPUT_FORM_USER_DATA}"
|
|
||||||
input_form_locator = ModalWindowLocators.INPUT_FORM_USER_DATA
|
input_form_locator = ModalWindowLocators.INPUT_FORM_USER_DATA
|
||||||
|
|
||||||
# Настройка заголовка и кнопки закрытия
|
# Настройка заголовка и кнопки закрытия
|
||||||
|
|
@ -50,31 +48,32 @@ class EditUserModalWindow(ModalWindowComponent):
|
||||||
self.add_toolbar_button(locator_button_toolbar_close, "close")
|
self.add_toolbar_button(locator_button_toolbar_close, "close")
|
||||||
|
|
||||||
# Добавление полей формы
|
# Добавление полей формы
|
||||||
elements_locators = self._get_fields_locators(page)
|
elements_locators = self.get_input_fields_locators(
|
||||||
|
self.page.locator(ModalWindowLocators.INPUT_FORM_USER_DATA))
|
||||||
|
|
||||||
# Поле Имя
|
# Поле Имя
|
||||||
loc = elements_locators.get("Имя").locator(text_field_locator)
|
loc = elements_locators.get("Имя").locator(ModalWindowLocators.INPUT_FORM_USER_DATA_FIELD_NAME)
|
||||||
name_input = TextInput(page, loc, "name_input")
|
name_input = TextInput(page, loc, "name_input")
|
||||||
self.add_content_item("name_input", name_input)
|
self.add_content_item("name_input", name_input)
|
||||||
|
|
||||||
# Поле Роль
|
# Поле Роль
|
||||||
role_loc = self.page.locator(input_form_locator).get_by_role("combobox")
|
role_loc = self.page.locator(input_form_locator).get_by_role("combobox").first
|
||||||
role_input = TextInput(page, role_loc, "role_input")
|
role_input = TextInput(page, role_loc, "role_input")
|
||||||
self.add_content_item("role_input", role_input)
|
self.add_content_item("role_input", role_input)
|
||||||
self.add_content_item("roles_list", DropdownList(page))
|
self.add_content_item("roles_list", DropdownList(page))
|
||||||
|
|
||||||
# Поле Комментарий
|
# Поле Комментарий
|
||||||
loc = elements_locators.get("Комментарий").locator(text_field_locator)
|
loc = elements_locators.get("Комментарий").locator(ModalWindowLocators.INPUT_FORM_USER_DATA_FIELD_COMMENT)
|
||||||
commentary_input = TextInput(page, loc, "commentary_input")
|
commentary_input = TextInput(page, loc, "commentary_input")
|
||||||
self.add_content_item("commentary_input", commentary_input)
|
self.add_content_item("commentary_input", commentary_input)
|
||||||
|
|
||||||
# Поле E-mail
|
# Поле E-mail
|
||||||
loc = elements_locators.get("E-mail").locator(text_field_locator)
|
loc = elements_locators.get("E-mail").locator(ModalWindowLocators.INPUT_FORM_USER_DATA_FIELD_EMAIL)
|
||||||
email_input = TextInput(page, loc, "email_input")
|
email_input = TextInput(page, loc, "email_input")
|
||||||
self.add_content_item("email_input", email_input)
|
self.add_content_item("email_input", email_input)
|
||||||
|
|
||||||
# Поле Номер для СМС
|
# Поле Номер для СМС
|
||||||
loc = elements_locators.get("Номер для СМС").locator(text_field_locator)
|
loc = elements_locators.get("Номер для СМС").locator(ModalWindowLocators.INPUT_FORM_USER_DATA_FIELD_SMS)
|
||||||
phone_input = TextInput(page, loc, "phone_input")
|
phone_input = TextInput(page, loc, "phone_input")
|
||||||
self.add_content_item("phone_input", phone_input)
|
self.add_content_item("phone_input", phone_input)
|
||||||
|
|
||||||
|
|
@ -93,7 +92,7 @@ class EditUserModalWindow(ModalWindowComponent):
|
||||||
# Чекбокс "Блокировка"
|
# Чекбокс "Блокировка"
|
||||||
checkbox_blocking = Checkbox(
|
checkbox_blocking = Checkbox(
|
||||||
page,
|
page,
|
||||||
label_blocking_locator.locator("../..").get_by_role("checkbox"),
|
page.locator(input_form_locator).locator(ModalWindowLocators.INPUT_FORM_USER_DATA_CHECKBOX_BLOCKED),
|
||||||
"blocking"
|
"blocking"
|
||||||
)
|
)
|
||||||
self.add_content_item("blocking_checkbox", checkbox_blocking)
|
self.add_content_item("blocking_checkbox", checkbox_blocking)
|
||||||
|
|
@ -111,7 +110,7 @@ class EditUserModalWindow(ModalWindowComponent):
|
||||||
# Чекбокс "Подписка на Push-уведомления"
|
# Чекбокс "Подписка на Push-уведомления"
|
||||||
checkbox_push = Checkbox(
|
checkbox_push = Checkbox(
|
||||||
page,
|
page,
|
||||||
label_push_locator.locator("../..").get_by_role("checkbox"),
|
page.locator(input_form_locator).locator(ModalWindowLocators.INPUT_FORM_USER_DATA_CHECKBOX_PUSH_ACTIVE),
|
||||||
"push_notification"
|
"push_notification"
|
||||||
)
|
)
|
||||||
self.add_content_item("push_notification_checkbox", checkbox_push)
|
self.add_content_item("push_notification_checkbox", checkbox_push)
|
||||||
|
|
@ -241,15 +240,15 @@ class EditUserModalWindow(ModalWindowComponent):
|
||||||
reset_password_button = self.get_button_by_name("reset_password")
|
reset_password_button = self.get_button_by_name("reset_password")
|
||||||
reset_password_button.click()
|
reset_password_button.click()
|
||||||
|
|
||||||
def _get_fields_locators(self, page) -> dict:
|
# def _get_fields_locators(self, page) -> dict:
|
||||||
fields_locators = {}
|
# fields_locators = {}
|
||||||
elements = page.locator(ModalWindowLocators.INPUT_FORM_USER_DATA). \
|
# elements = page.locator(ModalWindowLocators.INPUT_FORM_USER_DATA). \
|
||||||
locator("div.v-text-field__slot > input").all()
|
# locator("div.v-text-field__slot > input").all()
|
||||||
for el in elements:
|
# for el in elements:
|
||||||
val = el.input_value().strip()
|
# val = el.input_value().strip()
|
||||||
if val:
|
# if val:
|
||||||
fields_locators[val] = el.locator("../ancestor::div[5]")
|
# fields_locators[val] = el.locator("../ancestor::div[5]")
|
||||||
return fields_locators
|
# return fields_locators
|
||||||
|
|
||||||
# Проверки:
|
# Проверки:
|
||||||
def check_content(self, user_name, role):
|
def check_content(self, user_name, role):
|
||||||
|
|
|
||||||
|
|
@ -24,8 +24,18 @@ class ModalWindowLocators:
|
||||||
MODAL_WINDOW_TEXT_FIELD_INPUT = f"{MODAL_WINDOW}//input"
|
MODAL_WINDOW_TEXT_FIELD_INPUT = f"{MODAL_WINDOW}//input"
|
||||||
|
|
||||||
INPUT_FORM_USER_DATA = f"{MODAL_WINDOW}//form[@class='v-form']"
|
INPUT_FORM_USER_DATA = f"{MODAL_WINDOW}//form[@class='v-form']"
|
||||||
TEXT_FIELD_INPUT_FORM_USER_DATA = "div[2]/div/div/div/div/input"
|
INPUT_FORM_USER_DATA_FIELD_NAME = "//input[@data-testid='USER_CARD__text-field__name']"
|
||||||
# TEXT_FIELD_INPUT_FORM_USER_DATA = "xpath=div[2]/div/div/div/div/input"
|
INPUT_FORM_USER_DATA_FIELD_ROLE = "//input[@data-testid='USER_CARD__select__role']"
|
||||||
|
INPUT_FORM_USER_DATA_FIELD_PASSWORD = "//input[@data-testid='USER_CARD__text-field__password']"
|
||||||
|
INPUT_FORM_USER_DATA_FIELD_COMMENT = "//input[@data-testid='USER_CARD__text-field__comment']"
|
||||||
|
INPUT_FORM_USER_DATA_FIELD_EMAIL = "//input[@data-testid='USER_CARD__text-field__email']"
|
||||||
|
INPUT_FORM_USER_DATA_FIELD_SMS = "//input[@data-testid='USER_CARD__text-field__sms_phone']"
|
||||||
|
|
||||||
|
INPUT_FORM_USER_DATA_CHECKBOX_BLOCKED = "//input[@data-testid='USER_CARD__checkbox__blocked']"
|
||||||
|
INPUT_FORM_USER_DATA_CHECKBOX_PUSH_ACTIVE = "//input[@data-testid='USER_CARD__checkbox__push_active']"
|
||||||
|
|
||||||
|
# TEXT_FIELD_INPUT_FORM_USER_DATA = "div[2]/div/div/div/div/input"
|
||||||
|
|
||||||
MENU_ACTIVE_INPUT_FORM = "//div[contains(@class, 'menuable__content__active')]"
|
MENU_ACTIVE_INPUT_FORM = "//div[contains(@class, 'menuable__content__active')]"
|
||||||
MENU_ACTIVE_ITEMS = "//div[@role='list']//div[@role='listitem']"
|
MENU_ACTIVE_ITEMS = "//div[@role='list']//div[@role='listitem']"
|
||||||
LABEL_INPUT_FORM_USER_DATA = "//label[contains(@class,'v-label')]/span"
|
LABEL_INPUT_FORM_USER_DATA = "//label[contains(@class,'v-label')]/span"
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue