Обновление локаторов элементов стойки

radislav/element_rack
Radislav 2025-12-15 13:25:59 +03:00
parent d71fe80166
commit 4523ff6db3
1 changed files with 19 additions and 18 deletions

View File

@ -17,34 +17,35 @@ class RackLocators:
"""
# Основной контейнер вкладок стойки (верхние вкладки)
TABS_CONTAINER = "//div[@class='v-tabs__container']"
TABS_CONTAINER = "//div[starts-with(@data-testid, 'CABINET_SHOW__') and contains(@class, 'v-tabs__div')]"
# Все элементы верхних вкладок стойки
ALL_TABS = "//div[@class='v-tabs__container']//a[contains(@class, 'v-tabs__item')]"
ALL_TABS = "//div[starts-with(@data-testid, 'CABINET_SHOW__') and contains(@class, 'v-tabs__div')]//a[contains(@class, 'v-tabs__item')]"
# Кнопка редактирования свойств стойки
EDIT_BUTTON = "//button[@data-v-5f34ceac and contains(@class, 'font-weight-medium')]"
EDIT_BUTTON ="//button[@data-testid='CABINET_SHOW__btn__edit']"
# Кнопка "Скрыть стойку"
HIDE_RACK_BUTTON = "//div[contains(@class, 'cabinet_hide_button')]//i[contains(@class, 'material-icons') and text()='navigate_before']"
HIDE_RACK_BUTTON = "//div[@data-testid='CABINET_SHOW__div__hideCabinet']"
# Кнопка "Показать стойку"
SHOW_RACK_BUTTON = "//div[contains(@class, 'cabinet_hide_button')]//i[contains(@class, 'material-icons') and text()='navigate_next']"
SHOW_RACK_BUTTON = "//div[@data-testid='CABINET_SHOW__div__hideCabinet']"
# Универсальный локатор для любой вкладки по имени
TAB_BY_NAME = "//div[@class='v-tabs__container']//a[contains(@class, 'v-tabs__item') and contains(., '{}')]"
TAB_BY_NAME = "//div[starts-with(@data-testid, 'CABINET_SHOW__') and contains(@class, 'v-tabs__div')]//a[contains(@class, 'v-tabs__item') and .//*[contains(., '{}')]]"
# Конкретные вкладки по тексту
GENERAL_INFO_TAB = "//div[@class='v-tabs__container']//a[contains(@class, 'v-tabs__item') and contains(., 'Общая информация')]"
MAINTENANCE_TAB = "//div[@class='v-tabs__container']//a[contains(@class, 'v-tabs__item') and contains(., 'Обслуживание')]"
EVENTS_TAB = "//div[@class='v-tabs__container']//a[contains(@class, 'v-tabs__item') and contains(., 'События')]"
SERVICES_TAB = "//div[@class='v-tabs__container']//a[contains(@class, 'v-tabs__item') and contains(., 'Сервисы')]"
COMPOSITION_TAB = "//div[@data-testid='CABINET_SHOW__composition_tab']//a[contains(@class, 'v-tabs__item')]"
GENERAL_INFO_TAB = "//div[@data-testid='CABINET_SHOW__general_info_tab']//a[contains(@class, 'v-tabs__item')]"
MAINTENANCE_TAB = "//div[@data-testid='CABINET_SHOW__service_tab']//a[contains(@class, 'v-tabs__item')]"
EVENTS_TAB = "//div[@data-testid='CABINET_SHOW__events_tab']//a[contains(@class, 'v-tabs__item')]"
SERVICES_TAB = "//div[@data-testid='CABINET_SHOW__services_tab']//a[contains(@class, 'v-tabs__item')]"
# Классы для проверки активности
ACTIVE_TAB_CLASSES = ["accent--text", "v-tabs__item--active"]
# Локатор для активной вкладки
ACTIVE_TAB = "//div[@class='v-tabs__container']//a[contains(@class, 'v-tabs__item--active')]"
ACTIVE_TAB = "//div[starts-with(@data-testid, 'CABINET_SHOW__') and contains(@class, 'v-tabs__div')]//a[contains(@class, 'v-tabs__item--active')]"
# Контейнер формы
FORM_CONTAINER = "//div[contains(@class, 'container')]"
@ -85,15 +86,15 @@ class RackLocators:
MAIN_CONTAINER = "//div[contains(@class, 'layout cabinet')]"
# Кнопки переключения сторон
FRONT_SIDE_BUTTON = "//button[contains(@class, 'v-btn')]//div[contains(@class, 'v-btn__content') and normalize-space(text())='Лицевая сторона']"
BACK_SIDE_BUTTON = "//button[contains(@class, 'v-btn')]//div[contains(@class, 'v-btn__content') and normalize-space(text())='Обратная сторона']"
FRONT_SIDE_BUTTON = "//button[@data-testid='page-cabinet__btn__mount_front']"
BACK_SIDE_BUTTON = "//button[@data-testid='page-cabinet__btn__mount_rear']"
# Активная кнопка (имеет класс primary, но НЕ имеет outline)
ACTIVE_SIDE_BUTTON = "//button[contains(@class, 'v-btn') and contains(@class, 'primary') and not(contains(@class, 'v-btn--outline'))]"
ACTIVE_SIDE_BUTTON_TEXT = "//button[contains(@class, 'v-btn') and contains(@class, 'primary') and not(contains(@class, 'v-btn--outline'))]//div[contains(@class, 'v-btn__content')]"
# Локаторы для определения активной стороны
ACTIVE_SIDE_BUTTON = "//button[contains(@class, 'primary--text')]"
INACTIVE_SIDE_BUTTON = "//button[contains(@class, 'secondary--text')]"
# Неактивная кнопка (имеет outline или не имеет primary)
INACTIVE_SIDE_BUTTON = "//button[contains(@class, 'v-btn') and (contains(@class, 'v-btn--outline') or not(contains(@class, 'primary')))]"
# Для получения текста активной стороны
ACTIVE_SIDE_BUTTON_TEXT = "//button[contains(@class, 'primary--text')]//div[contains(@class, 'v-btn__content')]"
# Кнопка добавления (add_circle)
ADD_CIRCLE_BUTTON = "//i[contains(text(), 'add_circle')]"