feat: добавление проверки существования элемента навигации
- Добавлен метод check_navigation_item_exists с возвратом boolean - Реализована мягкая проверка элементов навигационной панелиradislav/tests_rack
parent
a2d37a8090
commit
ad7cb98bb3
|
|
@ -8,8 +8,8 @@ from playwright.sync_api import Page
|
||||||
from locators.navigation_panel_locators import NavigationPanelLocators
|
from locators.navigation_panel_locators import NavigationPanelLocators
|
||||||
from components_derived.container_system_log_events import SystemLogEventsContainer
|
from components_derived.container_system_log_events import SystemLogEventsContainer
|
||||||
from components_derived.user_card import UserCard
|
from components_derived.user_card import UserCard
|
||||||
from components.navbar_component import NavigationPanelComponent
|
|
||||||
from components.eventbar_component import EventPanelComponent
|
from components.eventbar_component import EventPanelComponent
|
||||||
|
from components.navbar_component import NavigationPanelComponent
|
||||||
from pages.base_page import BasePage
|
from pages.base_page import BasePage
|
||||||
|
|
||||||
class MainPage(BasePage):
|
class MainPage(BasePage):
|
||||||
|
|
@ -35,24 +35,6 @@ class MainPage(BasePage):
|
||||||
self.event_panel = EventPanelComponent(page)
|
self.event_panel = EventPanelComponent(page)
|
||||||
|
|
||||||
# Действия:
|
# Действия:
|
||||||
def click_main_navigation_panel_item(self, item_name: str) -> None:
|
|
||||||
"""Кликает по элементу основной панели навигации.
|
|
||||||
|
|
||||||
Args:
|
|
||||||
item_name: Название элемента для клика.
|
|
||||||
"""
|
|
||||||
|
|
||||||
self.navigation_panel.click_item(NavigationPanelLocators.PANEL_MAIN, item_name)
|
|
||||||
|
|
||||||
def click_subpanel_item(self, item_name: str, parent=None) -> None:
|
|
||||||
"""Выполняет рекурсивный поиск по панели навигации заданного элемента и делает клик по нему."""
|
|
||||||
|
|
||||||
active_item_locator = self.page.locator(NavigationPanelLocators.PANEL_MAIN).locator(NavigationPanelLocators.ACTIVE_CONTAINER)
|
|
||||||
node_locator = active_item_locator.locator(NavigationPanelLocators.SUB_PANEL_MAIN).locator(NavigationPanelLocators.TREEVIEW).first
|
|
||||||
|
|
||||||
# Рекурсивный поиск в дереве v-treeview заданного элемента и клик по нему
|
|
||||||
self.navigation_panel.click_sub_item(node_locator, item_name, parent)
|
|
||||||
|
|
||||||
def click_events_panel_expand_less_button(self) -> None:
|
def click_events_panel_expand_less_button(self) -> None:
|
||||||
"""Выполняет нажатие кнопки галочка вверх."""
|
"""Выполняет нажатие кнопки галочка вверх."""
|
||||||
|
|
||||||
|
|
@ -68,6 +50,35 @@ class MainPage(BasePage):
|
||||||
|
|
||||||
return self.event_panel.click_system_log_tab()
|
return self.event_panel.click_system_log_tab()
|
||||||
|
|
||||||
|
def click_main_navigation_panel_item(self, item_name: str) -> None:
|
||||||
|
"""Кликает по элементу основной панели навигации.
|
||||||
|
|
||||||
|
Args:
|
||||||
|
item_name: Название элемента для клика.
|
||||||
|
"""
|
||||||
|
|
||||||
|
self.navigation_panel.click_item(
|
||||||
|
NavigationPanelLocators.PANEL_MAIN,
|
||||||
|
item_name
|
||||||
|
)
|
||||||
|
|
||||||
|
def click_subpanel_item(self, item_name: str, parent=None) -> None:
|
||||||
|
"""Выполняет рекурсивный поиск по панели навигации
|
||||||
|
заданного элемента и делает клик по нему."""
|
||||||
|
|
||||||
|
active_item_locator = self.page.locator(
|
||||||
|
NavigationPanelLocators.PANEL_MAIN
|
||||||
|
).locator(NavigationPanelLocators.ACTIVE_CONTAINER)
|
||||||
|
node_locator = active_item_locator.locator(
|
||||||
|
NavigationPanelLocators.SUB_PANEL_MAIN
|
||||||
|
).locator(NavigationPanelLocators.TREEVIEW).first
|
||||||
|
|
||||||
|
# Рекурсивный поиск в дереве v-treeview заданного элемента
|
||||||
|
# и клик по нему
|
||||||
|
self.navigation_panel.click_sub_item(
|
||||||
|
node_locator, item_name, parent
|
||||||
|
)
|
||||||
|
|
||||||
def click_user_button(self) -> UserCard:
|
def click_user_button(self) -> UserCard:
|
||||||
"""Выполняет нажатие кнопки пользователя."""
|
"""Выполняет нажатие кнопки пользователя."""
|
||||||
|
|
||||||
|
|
@ -78,17 +89,31 @@ class MainPage(BasePage):
|
||||||
|
|
||||||
self.event_panel.do_logout()
|
self.event_panel.do_logout()
|
||||||
|
|
||||||
def expand_navigation_subpanel(self):
|
def expand_navigation_subpanel(self) -> None:
|
||||||
"""Выполняет полное открытие активной главной навигационной подпанели."""
|
"""Выполняет полное открытие активной главной
|
||||||
|
навигационной подпанели."""
|
||||||
|
|
||||||
active_item_locator = self.page.locator(NavigationPanelLocators.PANEL_MAIN).locator(NavigationPanelLocators.ACTIVE_CONTAINER)
|
active_item_locator = self.page.locator(
|
||||||
node_locator = active_item_locator.locator(NavigationPanelLocators.SUB_PANEL_MAIN).locator(NavigationPanelLocators.TREEVIEW).first
|
NavigationPanelLocators.PANEL_MAIN
|
||||||
|
).locator(NavigationPanelLocators.ACTIVE_CONTAINER)
|
||||||
|
node_locator = active_item_locator.locator(
|
||||||
|
NavigationPanelLocators.SUB_PANEL_MAIN
|
||||||
|
).locator(NavigationPanelLocators.TREEVIEW).first
|
||||||
|
|
||||||
# Рекурсивный обход дерева v-treeview выбранной подпанели и вывод информации об элементах в режиме отладки (debug=True)
|
# Рекурсивный обход дерева v-treeview выбранной подпанели
|
||||||
self.navigation_panel.traverse_panel_tree(node_locator, debug=False)
|
# и вывод информации об элементах в режиме отладки (debug=True)
|
||||||
|
self.navigation_panel.traverse_panel_tree(
|
||||||
|
node_locator, debug=False
|
||||||
|
)
|
||||||
|
|
||||||
def get_event_counters_by_tooltips(self) -> {}:
|
def get_event_counters_by_buttons(self) -> dict:
|
||||||
"""Возвращает набор текстов всплывающих подсказок кнопок счетчиков событий."""
|
"""Возвращает набор значений кнопок счетчиков событий."""
|
||||||
|
|
||||||
|
return self.event_panel.get_event_button_values()
|
||||||
|
|
||||||
|
def get_event_counters_by_tooltips(self) -> dict:
|
||||||
|
"""Возвращает набор текстов всплывающих подсказок
|
||||||
|
кнопок счетчиков событий."""
|
||||||
|
|
||||||
events = self.event_panel.get_event_tooltip_texts()
|
events = self.event_panel.get_event_tooltip_texts()
|
||||||
|
|
||||||
|
|
@ -100,44 +125,27 @@ class MainPage(BasePage):
|
||||||
event_counters[event_name] = count
|
event_counters[event_name] = count
|
||||||
return event_counters
|
return event_counters
|
||||||
|
|
||||||
def get_event_counters_by_buttons(self) -> {}:
|
|
||||||
"""Возвращает набор значений кнопок счетчиков событий."""
|
|
||||||
|
|
||||||
return self.event_panel.get_event_button_values()
|
|
||||||
|
|
||||||
def get_events_panel_position(self) -> str:
|
def get_events_panel_position(self) -> str:
|
||||||
"""Возвращает текущее положение панели событий относительно страницы: "top", "center","bottom"."""
|
"""Возвращает текущее положение панели событий
|
||||||
|
относительно страницы: "top", "center","bottom"."""
|
||||||
|
|
||||||
return self.event_panel.get_panel_position()
|
return self.event_panel.get_panel_position()
|
||||||
|
|
||||||
def scroll_navigation_panel_up(self) -> None:
|
|
||||||
"""Прокручивает панель навигации вверх."""
|
|
||||||
|
|
||||||
self.navigation_panel.scroll_up(NavigationPanelLocators.PANEL_SCROLL_CONTAINER)
|
|
||||||
|
|
||||||
def scroll_navigation_panel_down(self) -> None:
|
def scroll_navigation_panel_down(self) -> None:
|
||||||
"""Прокручивает панель навигации вниз."""
|
"""Прокручивает панель навигации вниз."""
|
||||||
|
|
||||||
self.navigation_panel.scroll_down(NavigationPanelLocators.PANEL_SCROLL_CONTAINER)
|
self.navigation_panel.scroll_down(
|
||||||
|
NavigationPanelLocators.PANEL_SCROLL_CONTAINER
|
||||||
# Проверки:
|
|
||||||
def should_be_navigation_panel(self) -> None:
|
|
||||||
"""Проверяет наличие панели навигации."""
|
|
||||||
|
|
||||||
self.navigation_panel.check_visibility(
|
|
||||||
NavigationPanelLocators.PANEL_MAIN,
|
|
||||||
"Navigation panel is missing"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
def should_be_event_panel(self) -> None:
|
def scroll_navigation_panel_up(self) -> None:
|
||||||
"""Проверяет наличие элементов панели событий."""
|
"""Прокручивает панель навигации вверх."""
|
||||||
|
|
||||||
## to-do: кнопки галочки???
|
self.navigation_panel.scroll_up(
|
||||||
self.event_panel.should_be_tab_buttons()
|
NavigationPanelLocators.PANEL_SCROLL_CONTAINER
|
||||||
self.event_panel.should_be_event_buttons()
|
)
|
||||||
self.event_panel.should_be_search_button()
|
|
||||||
self.event_panel.should_be_user_button()
|
|
||||||
|
|
||||||
|
# Проверки:
|
||||||
def check_expand_less_button(self) -> bool:
|
def check_expand_less_button(self) -> bool:
|
||||||
"""Проверяет наличие кнопки галочка вверх."""
|
"""Проверяет наличие кнопки галочка вверх."""
|
||||||
|
|
||||||
|
|
@ -148,15 +156,18 @@ class MainPage(BasePage):
|
||||||
|
|
||||||
return self.event_panel.check_expand_more_button()
|
return self.event_panel.check_expand_more_button()
|
||||||
|
|
||||||
def check_navigation_panel_verticall_scrolling(self) -> bool:
|
def check_navigation_item_exists(self, item_name: str) -> bool:
|
||||||
"""Проверяет возможность вертикальной прокрутки панели.
|
"""Проверяет существование элемента в навигационной панели.
|
||||||
|
|
||||||
|
Args:
|
||||||
|
item_name: Название элемента для проверки
|
||||||
|
|
||||||
Returns:
|
Returns:
|
||||||
bool: True если прокрутка возможна, иначе False.
|
bool: True если элемент существует, False если нет
|
||||||
"""
|
"""
|
||||||
|
return self.navigation_panel.is_item_visible(
|
||||||
return self.navigation_panel.is_scrollable_vertically(
|
NavigationPanelLocators.PANEL_MAIN,
|
||||||
NavigationPanelLocators.PANEL_SCROLL_CONTAINER
|
item_name
|
||||||
)
|
)
|
||||||
|
|
||||||
def check_navigation_panel_item_visibility(self, item_name: str) -> None:
|
def check_navigation_panel_item_visibility(self, item_name: str) -> None:
|
||||||
|
|
@ -170,3 +181,31 @@ class MainPage(BasePage):
|
||||||
NavigationPanelLocators.PANEL_MAIN,
|
NavigationPanelLocators.PANEL_MAIN,
|
||||||
item_name
|
item_name
|
||||||
)
|
)
|
||||||
|
|
||||||
|
def check_navigation_panel_verticall_scrolling(self) -> bool:
|
||||||
|
"""Проверяет возможность вертикальной прокрутки панели.
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
bool: True если прокрутка возможна, иначе False.
|
||||||
|
"""
|
||||||
|
|
||||||
|
return self.navigation_panel.is_scrollable_vertically(
|
||||||
|
NavigationPanelLocators.PANEL_SCROLL_CONTAINER
|
||||||
|
)
|
||||||
|
|
||||||
|
def should_be_event_panel(self) -> None:
|
||||||
|
"""Проверяет наличие элементов панели событий."""
|
||||||
|
|
||||||
|
## to-do: кнопки галочки???
|
||||||
|
self.event_panel.should_be_tab_buttons()
|
||||||
|
self.event_panel.should_be_event_buttons()
|
||||||
|
self.event_panel.should_be_search_button()
|
||||||
|
self.event_panel.should_be_user_button()
|
||||||
|
|
||||||
|
def should_be_navigation_panel(self) -> None:
|
||||||
|
"""Проверяет наличие панели навигации."""
|
||||||
|
|
||||||
|
self.navigation_panel.check_visibility(
|
||||||
|
NavigationPanelLocators.PANEL_MAIN,
|
||||||
|
"Navigation panel is missing"
|
||||||
|
)
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue