From 453d6a5ec260d150c88c23808228e4db9bd64e07 Mon Sep 17 00:00:00 2001 From: Radislav Date: Tue, 16 Dec 2025 15:20:26 +0300 Subject: [PATCH] =?UTF-8?q?=D0=9F=D0=B5=D1=80=D0=B5=D0=BD=D0=BE=D1=81=20?= =?UTF-8?q?=D0=B8=D0=B7=D0=BC=D0=B5=D0=BD=D0=B5=D0=BD=D0=B8=D0=B9=20=D0=B8?= =?UTF-8?q?=D0=B7=20radislav/element=5Frack=20=D0=B2=20main:=20-=20compone?= =?UTF-8?q?nts/toolbar=5Fcomponent.py=20-=20locators/rack=5Flocators.py=20?= =?UTF-8?q?-=20pages/rack=5Fpage.py=20-=20tests/e2e/elements/test=5Felemen?= =?UTF-8?q?t=5Frack.py?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- components/toolbar_component.py | 49 ++ locators/rack_locators.py | 75 +-- pages/rack_page.py | 596 ++++++++++++++++++++++++ tests/e2e/elements/test_element_rack.py | 119 +++++ 4 files changed, 807 insertions(+), 32 deletions(-) create mode 100644 pages/rack_page.py create mode 100644 tests/e2e/elements/test_element_rack.py diff --git a/components/toolbar_component.py b/components/toolbar_component.py index 1e2c4e5..862366b 100644 --- a/components/toolbar_component.py +++ b/components/toolbar_component.py @@ -27,6 +27,7 @@ class ToolbarComponent(BaseComponent): def __init__(self, page: Page, title: str) -> None: """Инициализирует компонент тулбара с указанным заголовком.""" + super().__init__(page) self.title = title self.buttons = [] @@ -38,6 +39,7 @@ class ToolbarComponent(BaseComponent): Args: title (str): Новый заголовок """ + self.title = title def add_tooltip_button(self, locator: Locator, name: str) -> None: @@ -47,6 +49,7 @@ class ToolbarComponent(BaseComponent): locator (Locator): Локатор кнопки name (str): Уникальное имя кнопки """ + self.buttons.append(TooltipButton(self.page, locator, name)) def add_tab_button(self, locator: Locator, name: str) -> None: @@ -56,6 +59,7 @@ class ToolbarComponent(BaseComponent): locator (Locator): Локатор кнопки name (str): Уникальное имя кнопки """ + self.buttons.append(TabButton(self.page, locator, name)) def add_button(self, locator: Locator, name: str) -> None: @@ -65,6 +69,7 @@ class ToolbarComponent(BaseComponent): locator (Locator): Локатор кнопки name (str): Уникальное имя кнопки """ + self.buttons.append(Button(self.page, locator, name)) def get_button_by_name(self, name: str @@ -77,6 +82,7 @@ class ToolbarComponent(BaseComponent): Returns: TooltipButton | TabButton | Button | None: Найденная кнопка или None """ + for button in self.buttons: if button.name == name: return button @@ -91,6 +97,7 @@ class ToolbarComponent(BaseComponent): Raises: AssertionError: Если кнопка не найдена """ + button = self.get_button_by_name(name) if button is None: raise AssertionError(f"Unsupported button name {name}") @@ -112,6 +119,7 @@ class ToolbarComponent(BaseComponent): Raises: Exception: Если не удалось получить заголовок """ + # Получаем локатор заголовка title_locator = self.get_locator(locator) @@ -128,6 +136,40 @@ class ToolbarComponent(BaseComponent): return title_text + def get_toolbar_composite_title_text(self, locator: str|Locator , + timeout: int = 5000) -> []: + """Получает составной заголовок тулбара окна в виде списка подзаголовков. + + Args: + locator: Локатор для заголовка тулбара + timeout: Таймаут ожидания в миллисекундах + + Returns: + str: Текст заголовка тулбара + + Raises: + Exception: Если не удалось получить заголовок + """ + + toolbar_title_items = [] + + # Получаем локатор заголовка + title_locator = self.get_locator(locator) + + # Ждем появления заголовка с помощью expect + expect(title_locator).to_be_visible(timeout=timeout) + + # Найти все элементы
  • внутри