171 lines
8.8 KiB
Python
171 lines
8.8 KiB
Python
"""Модуль вкладки 'Сеансы/Настройки'.
|
||
|
||
Содержит класс SessionSettingsTab для работы с полями настройки сессий пользователей.
|
||
"""
|
||
|
||
import re
|
||
from playwright.sync_api import Page
|
||
from locators.settings_form_locators import SettingsFormLocators
|
||
from elements.text_input_element import TextInput
|
||
from elements.text_element import Text
|
||
from components.toolbar_component import ToolbarComponent
|
||
from components.settings_form_component import SettingsFormComponent
|
||
from pages.base_page import BasePage
|
||
|
||
|
||
class SessionSettingsTab(BasePage):
|
||
"""Класс для работы с вкладкой 'Сеансы/Настройки'.
|
||
|
||
Предоставляет методы для взаимодействия с полями настройки сессий пользователей.
|
||
|
||
Args:
|
||
page: Экземпляр страницы Playwright.
|
||
"""
|
||
|
||
def __init__(self, page: Page) -> None:
|
||
"""Инициализирует компоненты вкладки 'Сеансы/Настройки'."""
|
||
|
||
super().__init__(page)
|
||
|
||
locator_button_1 = self.page.get_by_role("navigation").filter(
|
||
has_text=re.compile("Настройки")
|
||
).get_by_role("button").nth(0)
|
||
locator_button_2 = self.page.get_by_role("navigation").filter(
|
||
has_text=re.compile("Настройки")
|
||
).get_by_role("button").nth(1)
|
||
|
||
self.toolbar = ToolbarComponent(page, "Настройки")
|
||
self.toolbar.add_tooltip_button(locator_button_1, "edit")
|
||
self.toolbar.add_tooltip_button(locator_button_1, "save")
|
||
self.toolbar.add_tooltip_button(locator_button_2, "cancel")
|
||
|
||
# Форма для отображения/редактирования полей настроек сессии пользователя
|
||
self.settings_form = SettingsFormComponent(page)
|
||
|
||
self.settings_form.add_toolbar_title("Время жизни сеанса")
|
||
|
||
admin_setting_label = Text(page,
|
||
page.locator(SettingsFormLocators.SETTTINGS_FORM_SCROLL_CONTAINER).\
|
||
get_by_text('Администратор'),
|
||
"admin_setting_label")
|
||
self.settings_form.add_content_item("admin_setting_label", admin_setting_label)
|
||
|
||
loc_admin = page.locator(SettingsFormLocators.SETTTINGS_FORM_SCROLL_CONTAINER).\
|
||
get_by_label('Администратор')
|
||
admin_setting = TextInput(page, loc_admin, "admin_setting")
|
||
self.settings_form.add_content_item("admin_setting", admin_setting)
|
||
|
||
operator_setting_label = Text(page,
|
||
page.locator(SettingsFormLocators.SETTTINGS_FORM_SCROLL_CONTAINER).\
|
||
get_by_text('Оператор'),
|
||
"operator_setting_label")
|
||
self.settings_form.add_content_item("operator_setting_label", operator_setting_label)
|
||
|
||
loc_oper = page.locator(SettingsFormLocators.SETTTINGS_FORM_SCROLL_CONTAINER).\
|
||
get_by_label('Оператор')
|
||
operator_setting = TextInput(page, loc_oper, "operator_setting")
|
||
self.settings_form.add_content_item("operator_setting", operator_setting)
|
||
|
||
manager_setting_label = Text(page,
|
||
page.locator(SettingsFormLocators.SETTTINGS_FORM_SCROLL_CONTAINER).\
|
||
get_by_text('Контактное лицо'),
|
||
"manager_setting_label")
|
||
self.settings_form.add_content_item("manager_setting_label", manager_setting_label)
|
||
|
||
loc_manager = page.locator(SettingsFormLocators.SETTTINGS_FORM_SCROLL_CONTAINER).\
|
||
get_by_label('Контактное лицо')
|
||
manager_setting = TextInput(page, loc_manager, "manager_setting")
|
||
self.settings_form.add_content_item("manager_setting", manager_setting)
|
||
|
||
inform_secur_user_setting_label = Text(page,
|
||
page.locator(SettingsFormLocators.SETTTINGS_FORM_SCROLL_CONTAINER).\
|
||
get_by_text('Специалист информационной безопасности'),
|
||
"inform_secur_user_setting_label")
|
||
self.settings_form.add_content_item("inform_secur_user_setting_label", inform_secur_user_setting_label)
|
||
|
||
loc_inform_secur_user = page.locator(SettingsFormLocators.SETTTINGS_FORM_SCROLL_CONTAINER).\
|
||
get_by_label('Специалист информационной безопасности')
|
||
inform_secur_user_setting = TextInput(page, loc_inform_secur_user, "inform_secur_user_setting")
|
||
self.settings_form.add_content_item("inform_secur_user_setting", inform_secur_user_setting)
|
||
|
||
collector_setting_label = Text(page,
|
||
page.locator(SettingsFormLocators.SETTTINGS_FORM_SCROLL_CONTAINER).\
|
||
get_by_text('$collector'),
|
||
"collector_setting_label")
|
||
self.settings_form.add_content_item("collector_setting_label", collector_setting_label)
|
||
|
||
loc_collector = page.locator(SettingsFormLocators.SETTTINGS_FORM_SCROLL_CONTAINER).\
|
||
get_by_label('$collector')
|
||
collector_setting = TextInput(page, loc_collector, "collector_setting")
|
||
self.settings_form.add_content_item("collector_setting", collector_setting)
|
||
|
||
# Действия:
|
||
# Проверки:
|
||
def check_content(self):
|
||
"""Проверяет наличие и корректность всех элементов формы."""
|
||
|
||
self.should_be_toolbar()
|
||
self.should_be_toolbar_buttons()
|
||
|
||
self.settings_form.should_be_toolbar()
|
||
|
||
for name in self.settings_form.content_items.keys():
|
||
item = self.settings_form.get_content_item(name)
|
||
print("check item: "+name)
|
||
item.check_visibility(
|
||
f"Session settings input form item with name '{name}' is missing"
|
||
)
|
||
|
||
def should_be_toolbar(self) -> None:
|
||
"""Проверяет наличие тулбара.
|
||
|
||
Raises:
|
||
AssertionError: Если тулбар или кнопка редактирования отсутствуют.
|
||
"""
|
||
loc = self.page.get_by_role("navigation").filter(
|
||
has_text=re.compile("Настройки")).locator("div").nth(1)
|
||
self.toolbar.check_toolbar_presence_by_locator(loc, "Toolbar with title 'Настройки' is missing")
|
||
self.toolbar.check_button_visibility("edit")
|
||
|
||
def should_be_toolbar_buttons(self) -> None:
|
||
"""Проверяет наличие и функциональность кнопок тулбара.
|
||
|
||
Raises:
|
||
AssertionError: Если кнопки недоступны или подсказки неверны.
|
||
"""
|
||
|
||
self.toolbar.check_button_visibility("edit")
|
||
self.toolbar.check_button_tooltip("edit", "Редактировать")
|
||
|
||
self.toolbar.get_button_by_name("edit").click()
|
||
self.toolbar.check_button_visibility("save")
|
||
self.toolbar.check_button_visibility("cancel")
|
||
self.toolbar.check_button_tooltip("save", "Сохранить")
|
||
self.toolbar.check_button_tooltip("cancel", "Отменить")
|
||
|
||
self.toolbar.get_button_by_name("cancel").click()
|
||
self.toolbar.check_button_visibility("edit")
|
||
|
||
def verify_form_data(self, session_settings: dict) -> None:
|
||
"""Проверяет соответствие содержимого полей формы данным из БД.
|
||
|
||
Raises:
|
||
AssertionError: Если содержимое поля не соответствует данным из БД.
|
||
"""
|
||
|
||
for key, value in session_settings.items():
|
||
field_value = ""
|
||
if key == "administrator":
|
||
field_value = self.settings_form.get_content_item("admin_setting").get_input_value().strip()
|
||
elif key == "operator":
|
||
field_value = self.settings_form.get_content_item("operator_setting").get_input_value().strip()
|
||
elif key == "manager":
|
||
field_value = self.settings_form.get_content_item("manager_setting").get_input_value().strip()
|
||
elif key == "inform_secur_user":
|
||
field_value = self.settings_form.get_content_item("inform_secur_user_setting").get_input_value().strip()
|
||
elif key == '$collector':
|
||
field_value = self.settings_form.get_content_item("collector_setting").get_input_value().strip()
|
||
else:
|
||
assert False, f"Got unsupported field name {key}"
|
||
assert field_value == str(value), f"{key} field value {field_value} is not equal value {value} from data base"
|