Перенос Dropdown List из элементов в компоненты
parent
2fbd1e9592
commit
a19e125ef2
|
|
@ -1,30 +1,30 @@
|
||||||
"""Модуль dropdown_list_element содержит класс для работы с выпадающими списками.
|
"""Модуль dropdown_list_component содержит класс для работы с выпадающими списками.
|
||||||
|
|
||||||
Класс DropdownList наследует базовый функционал BaseElement и добавляет
|
Класс DropdownList наследует базовый функционал BaseComponent и добавляет
|
||||||
методы для взаимодействия с выпадающими списками на странице.
|
методы для взаимодействия с выпадающими списками на странице.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
from playwright.sync_api import Page
|
||||||
from tools.logger import get_logger
|
from tools.logger import get_logger
|
||||||
from elements.base_element import BaseElement
|
from components.base_component import BaseComponent
|
||||||
|
|
||||||
logger = get_logger("DROPDOWN_LIST")
|
logger = get_logger("DROPDOWN_LIST")
|
||||||
|
|
||||||
class DropdownList(BaseElement):
|
class DropdownList(BaseComponent):
|
||||||
"""Класс для работы с выпадающими списками.
|
"""Класс для работы с выпадающими списками.
|
||||||
|
|
||||||
Наследует функциональность BaseElement и добавляет специфичные
|
Наследует функциональность BaseElement и добавляет специфичные
|
||||||
методы для выбора и проверки элементов списка.
|
методы для выбора и проверки элементов списка.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
@property
|
def __init__(self, page: Page):
|
||||||
def type_of(self) -> str:
|
"""Инициализирует компонент выпадающего списка.
|
||||||
"""Возвращает тип элемента ('выпадающий список').
|
|
||||||
|
|
||||||
Returns:
|
Args:
|
||||||
str: Тип элемента - 'выпадающий список'.
|
page: Экземпляр страницы Playwright.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
return "dropdown list"
|
super().__init__(page)
|
||||||
|
|
||||||
# Действия:
|
# Действия:
|
||||||
def click_item_with_text(self, text: str) -> None:
|
def click_item_with_text(self, text: str) -> None:
|
||||||
|
|
@ -34,7 +34,6 @@ class DropdownList(BaseElement):
|
||||||
text (str): Текст элемента для выбора.
|
text (str): Текст элемента для выбора.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
logger.info(f'Selecting item with text "{text}" from dropdown "{self.name}"')
|
|
||||||
self.page.get_by_role("listitem").filter(has_text=text).click()
|
self.page.get_by_role("listitem").filter(has_text=text).click()
|
||||||
|
|
||||||
# Проверки:
|
# Проверки:
|
||||||
|
|
@ -48,7 +47,6 @@ class DropdownList(BaseElement):
|
||||||
AssertionError: Если элемент отсутствует или недоступен.
|
AssertionError: Если элемент отсутствует или недоступен.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
logger.info(f'Checking item with text "{text}" in dropdown "{self.name}"')
|
|
||||||
enabled = self.page.get_by_role("listitem").filter(has_text=text).is_enabled()
|
enabled = self.page.get_by_role("listitem").filter(has_text=text).is_enabled()
|
||||||
if not enabled:
|
if not enabled:
|
||||||
assert False, f"Dropdown list item '{text}' is missing or disabled"
|
assert False, f"Dropdown list item '{text}' is missing or disabled"
|
||||||
|
|
@ -10,10 +10,10 @@ from tools.logger import get_logger
|
||||||
from locators.modal_window_locators import ModalWindowLocators
|
from locators.modal_window_locators import ModalWindowLocators
|
||||||
from elements.text_input_element import TextInput
|
from elements.text_input_element import TextInput
|
||||||
from elements.text_element import Text
|
from elements.text_element import Text
|
||||||
from elements.dropdown_list_element import DropdownList
|
|
||||||
from elements.checkbox_element import Checkbox
|
from elements.checkbox_element import Checkbox
|
||||||
from data.roles_dict import roles_dict
|
from data.roles_dict import roles_dict
|
||||||
from components.modal_window_component import ModalWindowComponent
|
from components.modal_window_component import ModalWindowComponent
|
||||||
|
from components.dropdown_list_component import DropdownList
|
||||||
from components.confirm_component import ConfirmComponent
|
from components.confirm_component import ConfirmComponent
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -40,7 +40,6 @@ class AddUserModalWindow(ModalWindowComponent):
|
||||||
roles_field_locator = ModalWindowLocators.ROLES_FIELD_INPUT_FORM_USER_DATA
|
roles_field_locator = ModalWindowLocators.ROLES_FIELD_INPUT_FORM_USER_DATA
|
||||||
input_form_locator = ModalWindowLocators.INPUT_FORM_USER_DATA
|
input_form_locator = ModalWindowLocators.INPUT_FORM_USER_DATA
|
||||||
label_locator = ModalWindowLocators.LABEL_INPUT_FORM_USER_DATA
|
label_locator = ModalWindowLocators.LABEL_INPUT_FORM_USER_DATA
|
||||||
roles_menu_locator = ModalWindowLocators.ROLES_MENU_INPUT_FORM_USER_DATA
|
|
||||||
|
|
||||||
# Настройка заголовка и кнопки закрытия тулбара
|
# Настройка заголовка и кнопки закрытия тулбара
|
||||||
self.window_title = "Добавить нового пользователя"
|
self.window_title = "Добавить нового пользователя"
|
||||||
|
|
@ -75,7 +74,7 @@ class AddUserModalWindow(ModalWindowComponent):
|
||||||
self.add_content_item("role_input", role_input)
|
self.add_content_item("role_input", role_input)
|
||||||
self.add_content_item(
|
self.add_content_item(
|
||||||
"roles_list",
|
"roles_list",
|
||||||
DropdownList(page, roles_menu_locator, "roles_list")
|
DropdownList(page)
|
||||||
)
|
)
|
||||||
|
|
||||||
loc = self.page.locator(input_form_locator).locator("xpath=div[4]").locator(text_field_locator)
|
loc = self.page.locator(input_form_locator).locator("xpath=div[4]").locator(text_field_locator)
|
||||||
|
|
@ -215,7 +214,8 @@ class AddUserModalWindow(ModalWindowComponent):
|
||||||
elif name == "role_input":
|
elif name == "role_input":
|
||||||
item.click()
|
item.click()
|
||||||
roles_list = self.get_content_item("roles_list")
|
roles_list = self.get_content_item("roles_list")
|
||||||
roles_list.check_presence("Roles list is missing")
|
roles_list.check_presence(self.page.locator(ModalWindowLocators.ROLES_MENU_INPUT_FORM_USER_DATA),
|
||||||
|
"Roles list is missing")
|
||||||
|
|
||||||
for role in roles_dict.values():
|
for role in roles_dict.values():
|
||||||
# временно, пока есть несоответствие со списком ролей в вкладке Сессии
|
# временно, пока есть несоответствие со списком ролей в вкладке Сессии
|
||||||
|
|
|
||||||
|
|
@ -10,9 +10,9 @@ from tools.logger import get_logger
|
||||||
from locators.modal_window_locators import ModalWindowLocators
|
from locators.modal_window_locators import ModalWindowLocators
|
||||||
from elements.text_input_element import TextInput
|
from elements.text_input_element import TextInput
|
||||||
from elements.text_element import Text
|
from elements.text_element import Text
|
||||||
from elements.dropdown_list_element import DropdownList
|
|
||||||
from elements.checkbox_element import Checkbox
|
from elements.checkbox_element import Checkbox
|
||||||
from components.modal_window_component import ModalWindowComponent
|
from components.modal_window_component import ModalWindowComponent
|
||||||
|
from components.dropdown_list_component import DropdownList
|
||||||
from components.confirm_component import ConfirmComponent
|
from components.confirm_component import ConfirmComponent
|
||||||
|
|
||||||
logger = get_logger("EDIT_USER_MODAL_WINDOW")
|
logger = get_logger("EDIT_USER_MODAL_WINDOW")
|
||||||
|
|
@ -38,7 +38,6 @@ class EditUserModalWindow(ModalWindowComponent):
|
||||||
roles_field_locator = ModalWindowLocators.ROLES_FIELD_INPUT_FORM_USER_DATA
|
roles_field_locator = ModalWindowLocators.ROLES_FIELD_INPUT_FORM_USER_DATA
|
||||||
input_form_locator = ModalWindowLocators.INPUT_FORM_USER_DATA
|
input_form_locator = ModalWindowLocators.INPUT_FORM_USER_DATA
|
||||||
label_locator = ModalWindowLocators.LABEL_INPUT_FORM_USER_DATA
|
label_locator = ModalWindowLocators.LABEL_INPUT_FORM_USER_DATA
|
||||||
roles_menu_locator = ModalWindowLocators.ROLES_MENU_INPUT_FORM_USER_DATA
|
|
||||||
|
|
||||||
# Настройка заголовка и кнопки закрытия
|
# Настройка заголовка и кнопки закрытия
|
||||||
self.window_title = user_name
|
self.window_title = user_name
|
||||||
|
|
@ -59,7 +58,7 @@ class EditUserModalWindow(ModalWindowComponent):
|
||||||
self.add_content_item("role_input", role_input)
|
self.add_content_item("role_input", role_input)
|
||||||
self.add_content_item(
|
self.add_content_item(
|
||||||
"roles_list",
|
"roles_list",
|
||||||
DropdownList(page, roles_menu_locator, "roles_list")
|
DropdownList(page)
|
||||||
)
|
)
|
||||||
|
|
||||||
loc = self.page.locator(input_form_locator).locator("xpath=div[3]").locator(text_field_locator)
|
loc = self.page.locator(input_form_locator).locator("xpath=div[3]").locator(text_field_locator)
|
||||||
|
|
@ -215,7 +214,8 @@ class EditUserModalWindow(ModalWindowComponent):
|
||||||
elif name == "role_input":
|
elif name == "role_input":
|
||||||
item.click()
|
item.click()
|
||||||
roles_list = self.get_content_item("roles_list")
|
roles_list = self.get_content_item("roles_list")
|
||||||
roles_list.check_presence("Roles list is missing")
|
roles_list.check_presence(self.page.locator(ModalWindowLocators.ROLES_MENU_INPUT_FORM_USER_DATA),
|
||||||
|
"Roles list is missing")
|
||||||
roles_list.check_item_with_text(role)
|
roles_list.check_item_with_text(role)
|
||||||
elif name == "roles_list":
|
elif name == "roles_list":
|
||||||
continue
|
continue
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue