Добавлено ожидает исчезновения всех активных всплывающих подсказок.
parent
d39ce05c4f
commit
ae2cd5611b
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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"
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue