From 93c88a12d2a1e1128c635f23661000aab5f3faaf Mon Sep 17 00:00:00 2001 From: Radislav Date: Mon, 29 Sep 2025 15:26:05 +0300 Subject: [PATCH] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=20=D0=BC=D0=B5=D1=82=D0=BE=D0=B4=20=D0=BF=D0=BE=D0=BB?= =?UTF-8?q?=D1=83=D1=87=D0=B5=D0=BD=D0=B8=D1=8F=20=D0=B7=D0=B0=D0=B3=D0=BE?= =?UTF-8?q?=D0=BB=D0=BE=D0=B2=D0=BA=D0=B0=20=D0=BE=D0=BA=D0=BD=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- components/toolbar_component.py | 56 ++++++++++++++++++++++----------- 1 file changed, 38 insertions(+), 18 deletions(-) diff --git a/components/toolbar_component.py b/components/toolbar_component.py index 8341b17..a9b6186 100644 --- a/components/toolbar_component.py +++ b/components/toolbar_component.py @@ -27,7 +27,6 @@ class ToolbarComponent(BaseComponent): def __init__(self, page: Page, title: str): """Инициализирует компонент тулбара с указанным заголовком.""" - super().__init__(page) self.title = title self.buttons = [] @@ -38,7 +37,6 @@ class ToolbarComponent(BaseComponent): Args: title (str): Новый заголовок """ - self.title = title def add_tooltip_button(self, locator: Locator, name: str) -> None: @@ -48,7 +46,6 @@ 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: @@ -58,7 +55,6 @@ class ToolbarComponent(BaseComponent): locator (Locator): Локатор кнопки name (str): Уникальное имя кнопки """ - self.buttons.append(TabButton(self.page, locator, name)) def add_button(self, locator: Locator, name: str) -> None: @@ -68,19 +64,17 @@ class ToolbarComponent(BaseComponent): locator (Locator): Локатор кнопки name (str): Уникальное имя кнопки """ - self.buttons.append(Button(self.page, locator, name)) - def get_button_by_name(self, name: str) -> TooltipButton | TabButton| Button | None: + def get_button_by_name(self, name: str) -> TooltipButton | TabButton | Button | None: """Возвращает кнопку по имени. Args: name (str): Имя кнопки Returns: - TooltipButton | TabButton| Button | None: Найденная кнопка или None + TooltipButton | TabButton | Button | None: Найденная кнопка или None """ - for button in self.buttons: if button.name == name: return button @@ -95,12 +89,42 @@ class ToolbarComponent(BaseComponent): Raises: AssertionError: Если кнопка не найдена """ - button = self.get_button_by_name(name) if button is None: raise AssertionError(f"Unsupported button name {name}") button.click() + def get_toolbar_title_text(self, locator: str = 'ToolbarLocators.TITLE', + filter_text: str = None, timeout: int = 5000) -> str: + """Получает заголовок тулбара окна. + + Args: + locator: Локатор для заголовка тулбара (по умолчанию 'ToolbarLocators.TITLE') + filter_text: Текст для фильтрации заголовка (опционально) + timeout: Таймаут ожидания в миллисекундах + + Returns: + str: Текст заголовка тулбара + + Raises: + Exception: Если не удалось получить заголовок + """ + # Получаем локатор заголовка + title_locator = self.get_locator(locator) + + # Фильтруем по тексту если указан + if filter_text: + title_locator = title_locator.filter(has_text=filter_text) + + # Ждем появления заголовка с помощью expect + expect(title_locator).to_be_visible(timeout=timeout) + + # Получаем текст заголовка + title_text = title_locator.text_content().strip() + logger.info("Заголовок тулбара: '%s'", title_text) + + return title_text + def is_button_present(self, name: str) -> bool: """Проверяет наличие кнопки. @@ -113,7 +137,6 @@ class ToolbarComponent(BaseComponent): Raises: AssertionError: Если имя кнопки не поддерживается """ - button = self.get_button_by_name(name) if button is None: raise AssertionError(f"Unsupported button name {name}") @@ -131,7 +154,6 @@ class ToolbarComponent(BaseComponent): Raises: AssertionError: Если имя кнопки не поддерживается """ - button = self.get_button_by_name(name) if button is None: raise AssertionError(f"Unsupported button name {name}") @@ -160,13 +182,12 @@ class ToolbarComponent(BaseComponent): def check_button_visibility(self, name: str) -> None: """Проверяет наличие и видимость кнопки с предварительной прокруткой к элементу. - Args: - name (str): Имя кнопки - - Raises: - AssertionError: Если кнопка не найдена или не видна - """ + Args: + name (str): Имя кнопки + Raises: + AssertionError: Если кнопка не найдена или не видна + """ button = self.get_button_by_name(name) if button is None: @@ -185,7 +206,6 @@ class ToolbarComponent(BaseComponent): Raises: AssertionError: Если текст подсказки не совпадает """ - button = self.get_button_by_name(name) if button is None: raise AssertionError(f"Unsupported button name {name}")