Перенос 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 elements.base_element import BaseElement
|
||||
from components.base_component import BaseComponent
|
||||
|
||||
logger = get_logger("DROPDOWN_LIST")
|
||||
|
||||
class DropdownList(BaseElement):
|
||||
class DropdownList(BaseComponent):
|
||||
"""Класс для работы с выпадающими списками.
|
||||
|
||||
Наследует функциональность BaseElement и добавляет специфичные
|
||||
методы для выбора и проверки элементов списка.
|
||||
"""
|
||||
|
||||
@property
|
||||
def type_of(self) -> str:
|
||||
"""Возвращает тип элемента ('выпадающий список').
|
||||
|
||||
Returns:
|
||||
str: Тип элемента - 'выпадающий список'.
|
||||
def __init__(self, page: Page):
|
||||
"""Инициализирует компонент выпадающего списка.
|
||||
|
||||
Args:
|
||||
page: Экземпляр страницы Playwright.
|
||||
"""
|
||||
|
||||
return "dropdown list"
|
||||
super().__init__(page)
|
||||
|
||||
# Действия:
|
||||
def click_item_with_text(self, text: str) -> None:
|
||||
|
|
@ -34,7 +34,6 @@ class DropdownList(BaseElement):
|
|||
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()
|
||||
|
||||
# Проверки:
|
||||
|
|
@ -48,7 +47,6 @@ class DropdownList(BaseElement):
|
|||
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()
|
||||
if not enabled:
|
||||
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 elements.text_input_element import TextInput
|
||||
from elements.text_element import Text
|
||||
from elements.dropdown_list_element import DropdownList
|
||||
from elements.checkbox_element import Checkbox
|
||||
from data.roles_dict import roles_dict
|
||||
from components.modal_window_component import ModalWindowComponent
|
||||
from components.dropdown_list_component import DropdownList
|
||||
from components.confirm_component import ConfirmComponent
|
||||
|
||||
|
||||
|
|
@ -40,7 +40,6 @@ class AddUserModalWindow(ModalWindowComponent):
|
|||
roles_field_locator = ModalWindowLocators.ROLES_FIELD_INPUT_FORM_USER_DATA
|
||||
input_form_locator = ModalWindowLocators.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 = "Добавить нового пользователя"
|
||||
|
|
@ -75,7 +74,7 @@ class AddUserModalWindow(ModalWindowComponent):
|
|||
self.add_content_item("role_input", role_input)
|
||||
self.add_content_item(
|
||||
"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)
|
||||
|
|
@ -215,7 +214,8 @@ class AddUserModalWindow(ModalWindowComponent):
|
|||
elif name == "role_input":
|
||||
item.click()
|
||||
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():
|
||||
# временно, пока есть несоответствие со списком ролей в вкладке Сессии
|
||||
|
|
|
|||
|
|
@ -10,9 +10,9 @@ from tools.logger import get_logger
|
|||
from locators.modal_window_locators import ModalWindowLocators
|
||||
from elements.text_input_element import TextInput
|
||||
from elements.text_element import Text
|
||||
from elements.dropdown_list_element import DropdownList
|
||||
from elements.checkbox_element import Checkbox
|
||||
from components.modal_window_component import ModalWindowComponent
|
||||
from components.dropdown_list_component import DropdownList
|
||||
from components.confirm_component import ConfirmComponent
|
||||
|
||||
logger = get_logger("EDIT_USER_MODAL_WINDOW")
|
||||
|
|
@ -38,7 +38,6 @@ class EditUserModalWindow(ModalWindowComponent):
|
|||
roles_field_locator = ModalWindowLocators.ROLES_FIELD_INPUT_FORM_USER_DATA
|
||||
input_form_locator = ModalWindowLocators.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
|
||||
|
|
@ -59,7 +58,7 @@ class EditUserModalWindow(ModalWindowComponent):
|
|||
self.add_content_item("role_input", role_input)
|
||||
self.add_content_item(
|
||||
"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)
|
||||
|
|
@ -215,7 +214,8 @@ class EditUserModalWindow(ModalWindowComponent):
|
|||
elif name == "role_input":
|
||||
item.click()
|
||||
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)
|
||||
elif name == "roles_list":
|
||||
continue
|
||||
|
|
|
|||
Loading…
Reference in New Issue