Добавлена функция выдачи элементов выпвдающего списка для компонента панели выбора значений
parent
42a813180f
commit
6c6f8c18f2
|
|
@ -156,10 +156,10 @@ class EventsContainerComponent(BaseComponent):
|
||||||
|
|
||||||
loc = self.container_locator.locator(self.table_locator)
|
loc = self.container_locator.locator(self.table_locator)
|
||||||
return self.events_table.get_rows_count(loc)
|
return self.events_table.get_rows_count(loc)
|
||||||
|
|
||||||
def get_sidebar_filter(self) -> SidebarFilterComponent:
|
def get_sidebar_filter(self) -> SidebarFilterComponent:
|
||||||
"""Возвращает боковую панель фильтрации."""
|
"""Возвращает боковую панель фильтрации."""
|
||||||
|
|
||||||
return self.sidebar_filter
|
return self.sidebar_filter
|
||||||
|
|
||||||
def get_toolbar_filter_button(self) -> Button:
|
def get_toolbar_filter_button(self) -> Button:
|
||||||
|
|
|
||||||
|
|
@ -9,9 +9,7 @@ from tools.logger import get_logger
|
||||||
from locators.toolbar_locators import ToolbarLocators
|
from locators.toolbar_locators import ToolbarLocators
|
||||||
from components.events_container_component import EventsContainerComponent
|
from components.events_container_component import EventsContainerComponent
|
||||||
|
|
||||||
|
logger = get_logger("SYSTEM_LOG_EVENTS_CONTAINER")
|
||||||
|
|
||||||
logger = get_logger("USER_SETTINGS_DIALOG")
|
|
||||||
|
|
||||||
|
|
||||||
class SystemLogEventsContainer(EventsContainerComponent):
|
class SystemLogEventsContainer(EventsContainerComponent):
|
||||||
|
|
@ -31,12 +29,12 @@ class SystemLogEventsContainer(EventsContainerComponent):
|
||||||
super().__init__(page, locator)
|
super().__init__(page, locator)
|
||||||
|
|
||||||
self.add_tab_to_toolbar(ToolbarLocators.TABS, "events")
|
self.add_tab_to_toolbar(ToolbarLocators.TABS, "events")
|
||||||
|
|
||||||
sidebar_filter = self.get_sidebar_filter()
|
sidebar_filter = self.get_sidebar_filter()
|
||||||
sidebar_filter.add_filtering_parameter("filter_type", "Тип")
|
sidebar_filter.add_filtering_parameter("filter_type", "Тип")
|
||||||
sidebar_filter.add_filtering_parameter("filter_strictness", "Строгость")
|
sidebar_filter.add_filtering_parameter("filter_strictness", "Строгость")
|
||||||
sidebar_filter.add_filtering_parameter("filter_host", "Хост")
|
sidebar_filter.add_filtering_parameter("filter_host", "Хост")
|
||||||
|
|
||||||
# Действия:
|
# Действия:
|
||||||
# Проверки:
|
# Проверки:
|
||||||
def check_content(self) -> None:
|
def check_content(self) -> None:
|
||||||
|
|
@ -64,18 +62,18 @@ class SystemLogEventsContainer(EventsContainerComponent):
|
||||||
assert False, "Table body is missing"
|
assert False, "Table body is missing"
|
||||||
|
|
||||||
self.should_be_pagination_buttons()
|
self.should_be_pagination_buttons()
|
||||||
|
|
||||||
sidebar_filter = self.click_filter_button()
|
sidebar_filter = self.click_filter_button()
|
||||||
sidebar_filter.check_content()
|
sidebar_filter.check_content()
|
||||||
|
|
||||||
filter_type_bar = sidebar_filter.get_filtering_parameter("filter_type")
|
filter_type_bar = sidebar_filter.get_filtering_parameter("filter_type")
|
||||||
filter_type_title = filter_type_bar.get_filter_parameter_title()
|
filter_type_title = filter_type_bar.get_filter_parameter_title()
|
||||||
assert filter_type_title == "Тип", "Filtering parameter bar 'Тип' is missing"
|
assert filter_type_title == "Тип", "Filtering parameter bar 'Тип' is missing"
|
||||||
|
|
||||||
filter_strictness_bar = sidebar_filter.get_filtering_parameter("filter_strictness")
|
filter_strictness_bar = sidebar_filter.get_filtering_parameter("filter_strictness")
|
||||||
filter_strictness_title = filter_strictness_bar.get_filter_parameter_title()
|
filter_strictness_title = filter_strictness_bar.get_filter_parameter_title()
|
||||||
assert filter_strictness_title == "Строгость", "Filtering parameter bar 'Строгость' is missing"
|
assert filter_strictness_title == "Строгость", "Filtering parameter bar 'Строгость' is missing"
|
||||||
|
|
||||||
filter_host_bar = sidebar_filter.get_filtering_parameter("filter_host")
|
filter_host_bar = sidebar_filter.get_filtering_parameter("filter_host")
|
||||||
filter_host_title = filter_host_bar.get_filter_parameter_title()
|
filter_host_title = filter_host_bar.get_filter_parameter_title()
|
||||||
assert filter_host_title == "Хост", "Filtering parameter bar 'Хост' is missing"
|
assert filter_host_title == "Хост", "Filtering parameter bar 'Хост' is missing"
|
||||||
|
|
|
||||||
|
|
@ -9,7 +9,7 @@ from locators.selection_bar_locators import SelectionBarLocators
|
||||||
from components.dropdown_list_component import DropdownList
|
from components.dropdown_list_component import DropdownList
|
||||||
from components.base_component import BaseComponent
|
from components.base_component import BaseComponent
|
||||||
|
|
||||||
logger = get_logger("FILTER_PARAMETER_BAR")
|
logger = get_logger("SELECTION_BAR")
|
||||||
|
|
||||||
|
|
||||||
class SelectionBarComponent(BaseComponent):
|
class SelectionBarComponent(BaseComponent):
|
||||||
|
|
@ -30,46 +30,66 @@ class SelectionBarComponent(BaseComponent):
|
||||||
|
|
||||||
# Локатор панели параметра фильтрации
|
# Локатор панели параметра фильтрации
|
||||||
self.selection_bar_locator = self.get_locator(locator)
|
self.selection_bar_locator = self.get_locator(locator)
|
||||||
|
|
||||||
# При нажатии на панель появляется выпадающий список с параметрами фильтрации для выбора
|
# При нажатии на панель появляется выпадающий список с параметрами фильтрации для выбора
|
||||||
self.selected_values_list = DropdownList(self.page)
|
self.selected_values_list = DropdownList(self.page)
|
||||||
|
|
||||||
# Действия:
|
# Действия:
|
||||||
def clear_selections(self) -> None:
|
def clear_selections(self) -> None:
|
||||||
""" Удаление ранее выбранных значений """
|
""" Удаление ранее выбранных значений """
|
||||||
|
|
||||||
selected_values = self.get_selected_values()
|
selected_values = self.get_selected_values()
|
||||||
if len(selected_values) > 0:
|
if len(selected_values) > 0:
|
||||||
clear_button_locator = self.selection_bar_locator.\
|
clear_button_locator = self.selection_bar_locator.\
|
||||||
locator(SelectionBarLocators.CLEAR_SELECTION_BUTTON)
|
locator(SelectionBarLocators.CLEAR_SELECTION_BUTTON)
|
||||||
clear_button_locator.click()
|
clear_button_locator.click()
|
||||||
|
|
||||||
|
def get_available_options(self) -> list[str]:
|
||||||
|
"""Возвращает список всех доступных опций из выпадающего списка """
|
||||||
|
|
||||||
|
logger.info("Получение списка доступных опций из выпадающего списка...")
|
||||||
|
|
||||||
|
# Открываем выпадающий список
|
||||||
|
self.open_values_list()
|
||||||
|
|
||||||
|
# Ждем появления списка
|
||||||
|
self.page.wait_for_timeout(1000)
|
||||||
|
|
||||||
|
# Получаем все элементы списка
|
||||||
|
options = self.selected_values_list.get_item_names(SelectionBarLocators.LIST_ITEMS)
|
||||||
|
|
||||||
|
# Закрываем список (кликаем вне его)
|
||||||
|
self.page.mouse.click(10, 10)
|
||||||
|
self.page.wait_for_timeout(500)
|
||||||
|
|
||||||
|
logger.info(f"Найдено доступных опций: {len(options)} - {options}")
|
||||||
|
return options
|
||||||
|
|
||||||
def get_selection_bar_title(self) -> str:
|
def get_selection_bar_title(self) -> str:
|
||||||
""" Возвращает название панели выбора значения """
|
""" Возвращает название панели выбора значения """
|
||||||
|
|
||||||
title_locator = self.selection_bar_locator.locator("//label")
|
title_locator = self.selection_bar_locator.locator("//label")
|
||||||
return title_locator.text_content()
|
return title_locator.text_content()
|
||||||
|
|
||||||
def get_selected_values(self) -> []:
|
def get_selected_values(self) -> list[str]:
|
||||||
""" Возвращает список выбранных значений """
|
""" Возвращает список выбранных значений """
|
||||||
|
|
||||||
selected_values_locator = self.selection_bar_locator.\
|
selected_values_locator = self.selection_bar_locator.\
|
||||||
locator(SelectionBarLocators.PARAMETERS_SELECTED)
|
locator(SelectionBarLocators.PARAMETERS_SELECTED)
|
||||||
|
|
||||||
selected_values = selected_values_locator.all_inner_texts()
|
selected_values = selected_values_locator.all_inner_texts()
|
||||||
return selected_values[0].splitlines()
|
return selected_values[0].splitlines()
|
||||||
|
|
||||||
def open_values_list(self) -> None:
|
def open_values_list(self) -> None:
|
||||||
""" Открытие выпадающего списка путем нажатия на панель выбора значения """
|
""" Открытие выпадающего списка путем нажатия на панель выбора значения """
|
||||||
|
|
||||||
expect(self.selection_bar_locator).to_be_visible()
|
expect(self.selection_bar_locator).to_be_visible()
|
||||||
self.selection_bar_locator.click()
|
self.selection_bar_locator.click()
|
||||||
|
|
||||||
def select_value(self, name: str) -> None:
|
def select_value(self, name: str) -> None:
|
||||||
""" Выбор значения из списка """
|
""" Выбор значения из списка """
|
||||||
|
|
||||||
self.selected_values_list.check_item_with_text(name)
|
self.selected_values_list.check_item_with_text(name)
|
||||||
self.selected_values_list.click_item_with_text(name)
|
self.selected_values_list.click_item_with_text(name)
|
||||||
|
|
||||||
# Проверки:
|
# Проверки:
|
||||||
|
|
|
||||||
|
|
@ -1,20 +1,20 @@
|
||||||
"""Модуль компонента боковой панели формы ввода полей фильтрации отображения данных в панели событий. Содержит класс для работы
|
"""Модуль компонента боковой панели формы ввода полей фильтрации отображения данных в панели событий. Содержит класс
|
||||||
с формами ввода, их элементами и проверками."""
|
для работы с формами ввода, их элементами и проверками."""
|
||||||
|
|
||||||
from playwright.sync_api import Page, Locator
|
from playwright.sync_api import Page, Locator
|
||||||
from tools.logger import get_logger
|
from tools.logger import get_logger
|
||||||
from elements.button_element import Button
|
from elements.button_element import Button
|
||||||
from components_derived.selection_bar_component import SelectionBarComponent
|
|
||||||
from components_derived.date_input_component import DateInput
|
|
||||||
from components.toolbar_component import ToolbarComponent
|
from components.toolbar_component import ToolbarComponent
|
||||||
from components.base_component import BaseComponent
|
from components.base_component import BaseComponent
|
||||||
|
from components_derived.selection_bar_component import SelectionBarComponent
|
||||||
|
from components_derived.date_input_component import DateInput
|
||||||
|
|
||||||
logger = get_logger("SIDEBAR_FILTER")
|
logger = get_logger("SIDEBAR_FILTER")
|
||||||
|
|
||||||
|
|
||||||
class SidebarFilterComponent(BaseComponent):
|
class SidebarFilterComponent(BaseComponent):
|
||||||
"""Компонент боковой панели формы ввода полей фильтрации отображения данных в панели событий. Предоставляет методы для
|
"""Компонент боковой панели формы ввода полей фильтрации отображения данных в панели событий. Предоставляет методы
|
||||||
взаимодействия с формой, ее содержимым и проверок."""
|
для взаимодействия с формой, ее содержимым и проверок."""
|
||||||
|
|
||||||
def __init__(self, page: Page, locator: str | Locator):
|
def __init__(self, page: Page, locator: str | Locator):
|
||||||
"""Инициализирует компонент боковой панели формы ввода параметров фильтрации.
|
"""Инициализирует компонент боковой панели формы ввода параметров фильтрации.
|
||||||
|
|
@ -84,15 +84,15 @@ class SidebarFilterComponent(BaseComponent):
|
||||||
# Проверки:
|
# Проверки:
|
||||||
def check_content(self) -> None:
|
def check_content(self) -> None:
|
||||||
"""Проверяет наличие постоянных полей панели параметров фильтрации."""
|
"""Проверяет наличие постоянных полей панели параметров фильтрации."""
|
||||||
|
|
||||||
self.should_be_toolbar()
|
self.should_be_toolbar()
|
||||||
self.start_time_filter.check_content("Дата начала")
|
self.start_time_filter.check_content("Дата начала")
|
||||||
self.finish_time_filter.check_content("Дата окончания")
|
self.finish_time_filter.check_content("Дата окончания")
|
||||||
|
|
||||||
self.check_apply_button_visibility()
|
self.check_apply_button_visibility()
|
||||||
self.check_reset_button_visibility()
|
self.check_reset_button_visibility()
|
||||||
|
|
||||||
|
|
||||||
def check_vertical_scrolling(self, locator: str| Locator) -> bool:
|
def check_vertical_scrolling(self, locator: str| Locator) -> bool:
|
||||||
"""Проверяет возможность вертикальной прокрутки формы."""
|
"""Проверяет возможность вертикальной прокрутки формы."""
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -8,9 +8,15 @@ class SelectionBarLocators:
|
||||||
"""Локаторы для компонента панели выбора значения.
|
"""Локаторы для компонента панели выбора значения.
|
||||||
|
|
||||||
Содержит XPath/CSS локаторы для:
|
Содержит XPath/CSS локаторы для:
|
||||||
|
- Кнопок открытия и очистки
|
||||||
|
- Выбранных значений
|
||||||
|
- Элементов выпадающего списка
|
||||||
"""
|
"""
|
||||||
|
|
||||||
OPEN_PARAMETERS_LIST_BUTTON = "div.v-input__icon--append"
|
OPEN_PARAMETERS_LIST_BUTTON = "div.v-input__icon--append"
|
||||||
CLEAR_SELECTION_BUTTON = "div.v-input__icon--clear"
|
CLEAR_SELECTION_BUTTON = "div.v-input__icon--clear"
|
||||||
PARAMETERS_SELECTED = "div.v-select__selections"
|
PARAMETERS_SELECTED = "div.v-select__selections"
|
||||||
|
|
||||||
|
# Локаторы для элементов выпадающего списка
|
||||||
|
LISTBOX = "//div[@role='listbox']"
|
||||||
|
LIST_ITEMS = "//div[@role='listbox']//div[@role='listitem']"
|
||||||
|
|
|
||||||
|
|
@ -36,12 +36,12 @@ class TestSelectionBarComponent:
|
||||||
system_log_events_container = mp.click_events_panel_system_log_tab()
|
system_log_events_container = mp.click_events_panel_system_log_tab()
|
||||||
sidebar_filter = system_log_events_container.click_filter_button()
|
sidebar_filter = system_log_events_container.click_filter_button()
|
||||||
browser.wait_for_timeout(500)
|
browser.wait_for_timeout(500)
|
||||||
|
|
||||||
sidebar_filter.add_filtering_parameter("filter_type", "Тип")
|
sidebar_filter.add_filtering_parameter("filter_type", "Тип")
|
||||||
filter_type_bar = sidebar_filter.get_filtering_parameter("filter_type")
|
filter_type_bar = sidebar_filter.get_filtering_parameter("filter_type")
|
||||||
filter_type_title = filter_type_bar.get_selection_bar_title()
|
filter_type_title = filter_type_bar.get_selection_bar_title()
|
||||||
assert filter_type_title == "Тип", "Filtering parameter bar 'Тип' is missing"
|
assert filter_type_title == "Тип", "Filtering parameter bar 'Тип' is missing"
|
||||||
|
|
||||||
# @pytest.mark.develop
|
# @pytest.mark.develop
|
||||||
def test_selection_values(self, browser: Page) -> None:
|
def test_selection_values(self, browser: Page) -> None:
|
||||||
"""Проверяет возможность выбора значений.
|
"""Проверяет возможность выбора значений.
|
||||||
|
|
@ -59,23 +59,23 @@ class TestSelectionBarComponent:
|
||||||
system_log_events_container = mp.click_events_panel_system_log_tab()
|
system_log_events_container = mp.click_events_panel_system_log_tab()
|
||||||
sidebar_filter = system_log_events_container.click_filter_button()
|
sidebar_filter = system_log_events_container.click_filter_button()
|
||||||
browser.wait_for_timeout(500)
|
browser.wait_for_timeout(500)
|
||||||
|
|
||||||
sidebar_filter.add_filtering_parameter("filter_type", "Тип")
|
sidebar_filter.add_filtering_parameter("filter_type", "Тип")
|
||||||
filter_type_bar = sidebar_filter.get_filtering_parameter("filter_type")
|
filter_type_bar = sidebar_filter.get_filtering_parameter("filter_type")
|
||||||
|
|
||||||
filter_type_bar.open_values_list()
|
filter_type_bar.open_values_list()
|
||||||
filter_type_bar.select_value("e-nms")
|
filter_type_bar.select_value("e-nms")
|
||||||
selected_values = filter_type_bar.get_selected_values()
|
selected_values = filter_type_bar.get_selected_values()
|
||||||
assert len(selected_values) > 0, "No values has been selected"
|
assert len(selected_values) > 0, "No values has been selected"
|
||||||
assert selected_values[0] == "e-nms", f"Got unexpected selected value {selected_values[0]}"
|
assert selected_values[0] == "e-nms", f"Got unexpected selected value {selected_values[0]}"
|
||||||
|
|
||||||
filter_type_bar.open_values_list()
|
filter_type_bar.open_values_list()
|
||||||
filter_type_bar.select_value("Технический учет")
|
filter_type_bar.select_value("Технический учет")
|
||||||
selected_values = filter_type_bar.get_selected_values()
|
selected_values = filter_type_bar.get_selected_values()
|
||||||
assert len(selected_values) > 0, "No values has been selected"
|
assert len(selected_values) > 0, "No values has been selected"
|
||||||
assert selected_values[0] == "e-nms", f"Got unexpected selected value {selected_values[0]}"
|
assert selected_values[0] == "e-nms", f"Got unexpected selected value {selected_values[0]}"
|
||||||
assert selected_values[1] == "Технический учет", f"Got unexpected selected value {selected_values[1]}"
|
assert selected_values[1] == "Технический учет", f"Got unexpected selected value {selected_values[1]}"
|
||||||
|
|
||||||
# @pytest.mark.develop
|
# @pytest.mark.develop
|
||||||
def test_clear_selected_values(self, browser: Page) -> None:
|
def test_clear_selected_values(self, browser: Page) -> None:
|
||||||
"""Проверяет возможность удаления ранее выбранных значений.
|
"""Проверяет возможность удаления ранее выбранных значений.
|
||||||
|
|
@ -93,14 +93,13 @@ class TestSelectionBarComponent:
|
||||||
system_log_events_container = mp.click_events_panel_system_log_tab()
|
system_log_events_container = mp.click_events_panel_system_log_tab()
|
||||||
sidebar_filter = system_log_events_container.click_filter_button()
|
sidebar_filter = system_log_events_container.click_filter_button()
|
||||||
browser.wait_for_timeout(500)
|
browser.wait_for_timeout(500)
|
||||||
|
|
||||||
sidebar_filter.add_filtering_parameter("filter_type", "Тип")
|
sidebar_filter.add_filtering_parameter("filter_type", "Тип")
|
||||||
filter_type_bar = sidebar_filter.get_filtering_parameter("filter_type")
|
filter_type_bar = sidebar_filter.get_filtering_parameter("filter_type")
|
||||||
filter_type_bar.open_values_list()
|
filter_type_bar.open_values_list()
|
||||||
filter_type_bar.select_value("e-nms")
|
filter_type_bar.select_value("e-nms")
|
||||||
browser.wait_for_timeout(300)
|
browser.wait_for_timeout(300)
|
||||||
|
|
||||||
filter_type_bar.clear_selections()
|
filter_type_bar.clear_selections()
|
||||||
selected_values = filter_type_bar.get_selected_values()
|
selected_values = filter_type_bar.get_selected_values()
|
||||||
assert len(selected_values) == 0, "Selected values should be deleted"
|
assert len(selected_values) == 0, "Selected values should be deleted"
|
||||||
|
|
||||||
Loading…
Reference in New Issue