From a19e125ef2da40105ccd7ad80b755d66141ad2ca Mon Sep 17 00:00:00 2001 From: nsubbot Date: Tue, 2 Sep 2025 13:08:29 +0300 Subject: [PATCH] =?UTF-8?q?=D0=9F=D0=B5=D1=80=D0=B5=D0=BD=D0=BE=D1=81=20Dr?= =?UTF-8?q?opdown=20List=20=D0=B8=D0=B7=20=D1=8D=D0=BB=D0=B5=D0=BC=D0=B5?= =?UTF-8?q?=D0=BD=D1=82=D0=BE=D0=B2=20=D0=B2=20=D0=BA=D0=BE=D0=BC=D0=BF?= =?UTF-8?q?=D0=BE=D0=BD=D0=B5=D0=BD=D1=82=D1=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dropdown_list_component.py | 24 +++++++++---------- modal_windows/modal_add_user.py | 8 +++---- modal_windows/modal_edit_user.py | 8 +++---- 3 files changed, 19 insertions(+), 21 deletions(-) rename elements/dropdown_list_element.py => components/dropdown_list_component.py (68%) diff --git a/elements/dropdown_list_element.py b/components/dropdown_list_component.py similarity index 68% rename from elements/dropdown_list_element.py rename to components/dropdown_list_component.py index 1a98c4a..92a84cf 100644 --- a/elements/dropdown_list_element.py +++ b/components/dropdown_list_component.py @@ -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" diff --git a/modal_windows/modal_add_user.py b/modal_windows/modal_add_user.py index 0bbeecf..817d497 100644 --- a/modal_windows/modal_add_user.py +++ b/modal_windows/modal_add_user.py @@ -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(): # временно, пока есть несоответствие со списком ролей в вкладке Сессии diff --git a/modal_windows/modal_edit_user.py b/modal_windows/modal_edit_user.py index 549c743..54882a8 100644 --- a/modal_windows/modal_edit_user.py +++ b/modal_windows/modal_edit_user.py @@ -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