Актуализация теста вкладки Сеансы/Настройки после изменения UI

ra2/create_element_rack
nsubbot 2025-12-23 10:05:14 +03:00
parent edd91e66fc
commit 6e5eeaf4d6
5 changed files with 56 additions and 65 deletions

View File

@ -28,6 +28,26 @@ class BaseComponent:
self.page = page
# Действия:
def get_input_fields_locators(self, container_locator: Locator, css_class: str) -> dict:
"""Получение объекта словаря имя поля ввода : Locator.
Args:
locator: объект Locator.
css_class: css класс для уточнения положения искомого объекта в DOM.
Returns:
dict: словарь имя поля ввода : Locator.
"""
fields_locators = {}
elements = container_locator.locator(f"div.flex.{css_class} div.v-text-field__slot > input").all()
for el in elements:
val = el.input_value().strip()
if val:
fields_locators[val] = el.locator("../ancestor::div[6]")
return fields_locators
def get_locator(self, locator: str | Locator) -> Locator:
"""Получение объекта Locator из строки или существующего Locator.

View File

@ -18,6 +18,10 @@ class SettingsFormLocators:
SETTTINGS_FORM_SCROLL_CONTAINER = "//div[contains(@class, 'scrollarea__body')]"
SETTTINGS_FORM_TITLE = f"{SETTTINGS_FORM_SCROLL_CONTAINER}//div[contains(@class, 'v-toolbar__title')]"
SETTINGS_FORM_INPUT_FORM_CONTAINER = "//nav[contains(@class, 'active v-toolbar')]/following-sibling::div"
SETTINGS_FORM_INPUT_FIELD = "div:nth-child(2) div.v-text-field__slot > input"
SETTINGS_FORM_INPUT_VALUE_SUFFIX = "div:nth-child(2) div.v-text-field__slot div.v-text-field__suffix"
DROPDOWN_LIST = "//div[contains(@class, 'menuable__content__active')]"
SELECTED_VALUES = "//div[@class='v-select__selections']"
CLEAR_SELECTION_BUTTON = "div.v-input__icon--clear"

View File

@ -7,7 +7,6 @@ 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.alert_component import AlertComponent
from components_derived.settings_form_component import SettingsFormComponent
@ -45,58 +44,32 @@ class SessionSettingsTab(BasePage):
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)
css_class = "xs4"
container_locator = self.page.locator(SettingsFormLocators.SETTINGS_FORM_INPUT_FORM_CONTAINER)
self.input_fields_locators = self.settings_form.get_input_fields_locators(container_locator, css_class)
loc_admin = page.locator(SettingsFormLocators.SETTTINGS_FORM_SCROLL_CONTAINER).\
get_by_label('Администратор')
loc = self.input_fields_locators.get("Администратор")
loc_admin = loc.locator(SettingsFormLocators.SETTINGS_FORM_INPUT_FIELD)
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('Оператор')
loc = self.input_fields_locators.get("Оператор")
loc_oper = loc.locator(SettingsFormLocators.SETTINGS_FORM_INPUT_FIELD)
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('Контактное лицо')
loc = self.input_fields_locators.get("Контактное лицо")
loc_manager = loc.locator(SettingsFormLocators.SETTINGS_FORM_INPUT_FIELD)
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('Специалист информационной безопасности')
loc = self.input_fields_locators.get("Специалист информационной безопасности")
loc_inform_secur_user = loc.locator(SettingsFormLocators.SETTINGS_FORM_INPUT_FIELD)
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')
loc = self.input_fields_locators.get('$collector')
loc_collector = loc.locator(SettingsFormLocators.SETTINGS_FORM_INPUT_FIELD)
collector_setting = TextInput(page, loc_collector, "collector_setting")
self.settings_form.add_content_item("collector_setting", collector_setting)
@ -155,27 +128,6 @@ class SessionSettingsTab(BasePage):
assert False, f"Got unsupported field name {field_name}"
return field
def get_label_by_name(self, label_name: str) -> Text:
"""Возвращает элемент название поля ввода по его имени.
Returns:
Text: Элемент название поле ввода.
"""
if label_name == "administrator":
label = self.settings_form.get_content_item("admin_setting_label")
elif label_name == "operator":
label = self.settings_form.get_content_item("operator_setting_label")
elif label_name == "manager":
label = self.settings_form.get_content_item("manager_setting_label")
elif label_name == "inform_secur_user":
label = self.settings_form.get_content_item("inform_secur_user_setting_label")
elif label_name == '$collector':
label = self.settings_form.get_content_item("collector_setting_label")
else:
assert False, f"Got unsupported label name {label_name}"
return label
def get_setting_value(self, field_name: str) -> str:
"""Возвращает текущее значение требуемого поля настроек.
@ -248,17 +200,31 @@ class SessionSettingsTab(BasePage):
def check_content(self):
"""Проверяет наличие и корректность всех элементов формы."""
expected_input_field_names = ["Администратор", "Оператор",
"Специалист информационной безопасности",
"Контактное лицо", "$collector"]
self.should_be_toolbar()
self.should_be_toolbar_buttons()
self.should_be_form_toolbar()
actual_input_field_names = self.input_fields_locators.keys()
assert set(actual_input_field_names) == set(expected_input_field_names), \
f"Misscomparison input field names: Expected {expected_input_field_names}, Actual {actual_input_field_names}"
for name in self.settings_form.content_items.keys():
item = self.settings_form.get_content_item(name)
item.check_visibility(
f"Session settings input form item with name '{name}' is missing"
)
for name in actual_input_field_names:
value_suffix_loc = self.input_fields_locators.get(name).\
locator(SettingsFormLocators.SETTINGS_FORM_INPUT_VALUE_SUFFIX)
value_suffix = value_suffix_loc.text_content().strip()
assert value_suffix == "минут", f"Incorrect value suffix for field {name}"
def check_vertical_scrolling(self) -> bool:
"""Проверка возможности вертикального скроллинга формы настроек времени жизни сессии.
"""
@ -327,4 +293,4 @@ class SessionSettingsTab(BasePage):
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"
assert field_value==str(value),f"{key} field value {field_value} is not equal value {value} from data base"

View File

@ -51,7 +51,7 @@ class TestSessionSettingsForm:
assert is_scrollable_vertically, "Should be vertical scrolling"
sst.scroll_down()
sst.get_label_by_name('$collector').check_visibility("Text '$collector' should be visible")
sst.get_field_by_name('$collector').check_visibility("Text '$collector' should be visible")
sst.wait_for_timeout(3000)
sst.scroll_up()

View File

@ -48,7 +48,7 @@ class TestSessionSettingsTab:
main_page.click_subpanel_item("Сеансы")
main_page.click_subpanel_item("Настройки", parent="Сеансы")
# @pytest.mark.develop
# @pytest.mark.develop
def test_session_settings_tab_content(self, browser: Page) -> None:
"""Тест содержимого вкладки 'Сеансы/Настройки'.
@ -100,7 +100,8 @@ class TestSessionSettingsTab:
# @pytest.mark.develop
def test_edit_session_setting_by_arrow(self, browser: Page) -> None:
"""Тест проверки возможности увеличения/уменьшения значения выбранного поля формы с помощью стрелочек Вверх/Вниз.
"""Тест проверки возможности увеличения/уменьшения значения выбранного поля формы с помощью
стрелочек Вверх/Вниз.
"""
field_name = 'operator'