Добавлен метод получения заголовка окна

pull/1/head
Radislav 2025-09-29 15:26:05 +03:00
parent be28ffceaa
commit 93c88a12d2
1 changed files with 38 additions and 18 deletions

View File

@ -27,7 +27,6 @@ class ToolbarComponent(BaseComponent):
def __init__(self, page: Page, title: str): def __init__(self, page: Page, title: str):
"""Инициализирует компонент тулбара с указанным заголовком.""" """Инициализирует компонент тулбара с указанным заголовком."""
super().__init__(page) super().__init__(page)
self.title = title self.title = title
self.buttons = [] self.buttons = []
@ -38,7 +37,6 @@ class ToolbarComponent(BaseComponent):
Args: Args:
title (str): Новый заголовок title (str): Новый заголовок
""" """
self.title = title self.title = title
def add_tooltip_button(self, locator: Locator, name: str) -> None: def add_tooltip_button(self, locator: Locator, name: str) -> None:
@ -48,7 +46,6 @@ class ToolbarComponent(BaseComponent):
locator (Locator): Локатор кнопки locator (Locator): Локатор кнопки
name (str): Уникальное имя кнопки name (str): Уникальное имя кнопки
""" """
self.buttons.append(TooltipButton(self.page, locator, name)) self.buttons.append(TooltipButton(self.page, locator, name))
def add_tab_button(self, locator: Locator, name: str) -> None: def add_tab_button(self, locator: Locator, name: str) -> None:
@ -58,7 +55,6 @@ class ToolbarComponent(BaseComponent):
locator (Locator): Локатор кнопки locator (Locator): Локатор кнопки
name (str): Уникальное имя кнопки name (str): Уникальное имя кнопки
""" """
self.buttons.append(TabButton(self.page, locator, name)) self.buttons.append(TabButton(self.page, locator, name))
def add_button(self, locator: Locator, name: str) -> None: def add_button(self, locator: Locator, name: str) -> None:
@ -68,19 +64,17 @@ class ToolbarComponent(BaseComponent):
locator (Locator): Локатор кнопки locator (Locator): Локатор кнопки
name (str): Уникальное имя кнопки name (str): Уникальное имя кнопки
""" """
self.buttons.append(Button(self.page, locator, name)) 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: Args:
name (str): Имя кнопки name (str): Имя кнопки
Returns: Returns:
TooltipButton | TabButton| Button | None: Найденная кнопка или None TooltipButton | TabButton | Button | None: Найденная кнопка или None
""" """
for button in self.buttons: for button in self.buttons:
if button.name == name: if button.name == name:
return button return button
@ -95,12 +89,42 @@ class ToolbarComponent(BaseComponent):
Raises: Raises:
AssertionError: Если кнопка не найдена AssertionError: Если кнопка не найдена
""" """
button = self.get_button_by_name(name) button = self.get_button_by_name(name)
if button is None: if button is None:
raise AssertionError(f"Unsupported button name {name}") raise AssertionError(f"Unsupported button name {name}")
button.click() 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: def is_button_present(self, name: str) -> bool:
"""Проверяет наличие кнопки. """Проверяет наличие кнопки.
@ -113,7 +137,6 @@ class ToolbarComponent(BaseComponent):
Raises: Raises:
AssertionError: Если имя кнопки не поддерживается AssertionError: Если имя кнопки не поддерживается
""" """
button = self.get_button_by_name(name) button = self.get_button_by_name(name)
if button is None: if button is None:
raise AssertionError(f"Unsupported button name {name}") raise AssertionError(f"Unsupported button name {name}")
@ -131,7 +154,6 @@ class ToolbarComponent(BaseComponent):
Raises: Raises:
AssertionError: Если имя кнопки не поддерживается AssertionError: Если имя кнопки не поддерживается
""" """
button = self.get_button_by_name(name) button = self.get_button_by_name(name)
if button is None: if button is None:
raise AssertionError(f"Unsupported button name {name}") raise AssertionError(f"Unsupported button name {name}")
@ -160,13 +182,12 @@ class ToolbarComponent(BaseComponent):
def check_button_visibility(self, name: str) -> None: def check_button_visibility(self, name: str) -> None:
"""Проверяет наличие и видимость кнопки с предварительной прокруткой к элементу. """Проверяет наличие и видимость кнопки с предварительной прокруткой к элементу.
Args: Args:
name (str): Имя кнопки name (str): Имя кнопки
Raises:
AssertionError: Если кнопка не найдена или не видна
"""
Raises:
AssertionError: Если кнопка не найдена или не видна
"""
button = self.get_button_by_name(name) button = self.get_button_by_name(name)
if button is None: if button is None:
@ -185,7 +206,6 @@ class ToolbarComponent(BaseComponent):
Raises: Raises:
AssertionError: Если текст подсказки не совпадает AssertionError: Если текст подсказки не совпадает
""" """
button = self.get_button_by_name(name) button = self.get_button_by_name(name)
if button is None: if button is None:
raise AssertionError(f"Unsupported button name {name}") raise AssertionError(f"Unsupported button name {name}")