e-nms_qa_automation/pages/session_settings_tab.py

171 lines
8.8 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

"""Модуль вкладки 'Сеансы/Настройки'.
Содержит класс 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"