Добавлено ожидает исчезновения всех активных всплывающих подсказок.

pull/1/head
Radislav 2025-09-02 09:41:58 +03:00
parent d39ce05c4f
commit ae2cd5611b
2 changed files with 37 additions and 22 deletions

View File

@ -182,3 +182,11 @@ class BasePage:
return True
assert compare_lists(actual, expected), msg
def wait_for_tooltip_to_disappear(self, timeout: int = 5000) -> None:
"""Ожидает исчезновения всех активных всплывающих подсказок."""
self.page.mouse.click(10, 10)
tooltip_locator = self.page.locator(".v-tooltip__content.menuable__content__active")
tooltip_locator.wait_for(state="hidden", timeout=timeout)

View File

@ -32,7 +32,7 @@ class SessionsTab(BasePage):
self.toolbar = ToolbarComponent(page, "Сессия")
self.sessions_table = TableComponent(page)
self.delete_session_confirm = ConfirmComponent(page, " Отмена ", " Удалить ")
# Действия:
@ -75,37 +75,37 @@ class SessionsTab(BasePage):
button_locator = row_locator.locator(ButtonLocators.BUTTON_DELETE_SESSION)
return TooltipButton(self.page, button_locator, "delete_session_button")
def get_session_token(self) -> str:
"""Возвращает токен текущего пользователя.
Args:
Returns:
str: Токен текущего пользователя
Raises:
"""
return host.get_access_token()
def find_session_in_table(self, token: str) -> int:
"""Ищет сессию пользователя в таблице по выданному ему токену.
Args:
token (str): Токен пользователя
Returns:
int: Индекс строки или -1 если не найден
Raises:
AssertionError: Если таблица пуста.
"""
table_content = self.sessions_table.read(TableLocators.TABLE_WORK_AREA)
if len(table_content) == 0:
assert False, "The contents of the table are missing"
del table_content[0] # Удаляем заголовок
for row_index, session_info in enumerate(table_content):
if token in session_info:
return row_index
@ -121,46 +121,46 @@ class SessionsTab(BasePage):
"""Прокручивает таблицу сессий вниз."""
self.sessions_table.scroll_down(TableLocators.TABLE_SCROLL_CONTAINER)
# Проверки:
def check_delete_session_confirm_window(self):
""" Проверяет контент и возможность горизонтального скроллинга окна подтверждения удаления сессии. """
# Поиск в таблице сессий сроки для текущего пользователя
session_token = self.get_session_token()
row_index = self.find_session_in_table(session_token)
if row_index == -1:
assert False, "Session for this token has not been found"
# Найти кнопку удаления сессии и нажать на нее
delete_session_button = self.get_delete_session_button_from_row(row_index)
delete_session_button.click()
# Проверка открытия окна подтверждения с заголовком "Удаление"
title = "Удаление"
self.delete_session_confirm.check_title(
title,
f"Confirmation dialog window text '{title}' is missing"
)
# Проверка текста в окне подтверждения
confirm_message = f"Удалить сессию {session_token}?"
self.delete_session_confirm.check_text(
confirm_message,
"Confirmation dialog window text does not match what is expected"
)
# Проверка горизонтального скроллинга
is_scrollable_horizontally = self.delete_session_confirm.check_window_horizontal_scrolling()
assert is_scrollable_horizontally, "Should be horizontal scrolling"
self.delete_session_confirm.scroll_window_right()
self.page.wait_for_timeout(3000)
self.delete_session_confirm.scroll_window_left()
self.page.wait_for_timeout(2000)
# Нажать кнопку "Отмена"
self.delete_session_confirm.click_cancel_button()
self.delete_session_confirm.click_cancel_button()
def check_sessions_table_content(self, verify: bool = False) -> None:
"""Проверяет содержимое таблицы сессий.
@ -283,12 +283,19 @@ class SessionsTab(BasePage):
AssertionError: Если кнопка отсутствует или подсказка неверна.
"""
# Ожидаем исчезновения предыдущих подсказок перед проверкой
self.wait_for_tooltip_to_disappear()
delete_button = self.get_delete_session_button_from_row(row_index)
delete_button.check_presence(
f"Delete session button is missing on {row_index} row"
)
delete_button.check_tooltip_with_text(ButtonLocators.TOOLTIP, tooltip)
# Ожидаем исчезновения подсказки после проверки
self.wait_for_tooltip_to_disappear()
def should_be_session_in_table(self, token: str) -> None:
"""Проверяет наличие сессии пользователя в таблице.
@ -298,7 +305,7 @@ class SessionsTab(BasePage):
Raises:
AssertionError: Если сессия не найдена.
"""
found = self.find_session_in_table(token)
found = self.find_session_in_table(token)
if found == -1:
assert False, "Session for this token has not been found"
@ -311,7 +318,7 @@ class SessionsTab(BasePage):
Raises:
AssertionError: Если сессия найдена.
"""
found = self.find_session_in_table(token)
found = self.find_session_in_table(token)
if found != -1:
assert False, "Session for this token has been found"