Обновление локаторов элементов стойки v2
parent
4523ff6db3
commit
e87b428f09
|
|
@ -16,27 +16,28 @@ class RackLocators:
|
||||||
- Контейнеры и структурные элементы
|
- Контейнеры и структурные элементы
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
|
||||||
# Основной контейнер вкладок стойки (верхние вкладки)
|
# Основной контейнер вкладок стойки (верхние вкладки)
|
||||||
TABS_CONTAINER = "//div[starts-with(@data-testid, 'CABINET_SHOW__') and contains(@class, 'v-tabs__div')]"
|
TABS_CONTAINER = "//div[@data-testid='CABINET_SHOW__tabs' and contains(@class, 'v-tabs')]"
|
||||||
|
|
||||||
# Все элементы верхних вкладок стойки
|
# Все элементы верхних вкладок стойки
|
||||||
ALL_TABS = "//div[starts-with(@data-testid, 'CABINET_SHOW__') and contains(@class, 'v-tabs__div')]//a[contains(@class, 'v-tabs__item')]"
|
ALL_TABS = "//div[@data-testid='CABINET_SHOW__tabs']//a[contains(@class, 'v-tabs__item')]"
|
||||||
|
|
||||||
# Кнопка редактирования свойств стойки
|
# Кнопка редактирования свойств стойки
|
||||||
EDIT_BUTTON ="//button[@data-testid='CABINET_SHOW__btn__edit']"
|
EDIT_BUTTON ="//button[@data-testid='CABINET_SHOW__btn__edit']"
|
||||||
|
|
||||||
# Кнопка "Скрыть стойку"
|
# Кнопка "Скрыть стойку"
|
||||||
HIDE_RACK_BUTTON = "//div[@data-testid='CABINET_SHOW__div__hideCabinet']"
|
HIDE_RACK_BUTTON = "//div[@data-testid='CABINET_SHOW__div__hideCabinet' and contains(@class, 'cabinet_hide_button_trigger_show')]"
|
||||||
|
|
||||||
# Кнопка "Показать стойку"
|
# Кнопка "Показать стойку"
|
||||||
SHOW_RACK_BUTTON = "//div[@data-testid='CABINET_SHOW__div__hideCabinet']"
|
SHOW_RACK_BUTTON = "//div[@data-testid='CABINET_SHOW__div__hideCabinet' and contains(@class, 'cabinet_hide_button_trigger_hide')]"
|
||||||
|
|
||||||
# Универсальный локатор для любой вкладки по имени
|
# Универсальный локатор для любой вкладки по имени
|
||||||
TAB_BY_NAME = "//div[starts-with(@data-testid, 'CABINET_SHOW__') and contains(@class, 'v-tabs__div')]//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(., '{}')]]"
|
||||||
|
|
||||||
# Конкретные вкладки по тексту
|
# Конкретные вкладки по тексту
|
||||||
COMPOSITION_TAB = "//div[@data-testid='CABINET_SHOW__composition_tab']//a[contains(@class, 'v-tabs__item')]"
|
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')]"
|
GENERAL_INFO_TAB = "//div[@data-testid='CABINET_SHOW__main_tab']//a[contains(@class, 'v-tabs__item')]"
|
||||||
MAINTENANCE_TAB = "//div[@data-testid='CABINET_SHOW__service_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')]"
|
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')]"
|
SERVICES_TAB = "//div[@data-testid='CABINET_SHOW__services_tab']//a[contains(@class, 'v-tabs__item')]"
|
||||||
|
|
@ -45,7 +46,7 @@ class RackLocators:
|
||||||
ACTIVE_TAB_CLASSES = ["accent--text", "v-tabs__item--active"]
|
ACTIVE_TAB_CLASSES = ["accent--text", "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')]"
|
ACTIVE_TAB = "//div[@data-testid='CABINET_SHOW__tabs']//a[contains(@class, 'v-tabs__item--active')]"
|
||||||
|
|
||||||
# Контейнер формы
|
# Контейнер формы
|
||||||
FORM_CONTAINER = "//div[contains(@class, 'container')]"
|
FORM_CONTAINER = "//div[contains(@class, 'container')]"
|
||||||
|
|
@ -82,7 +83,10 @@ class RackLocators:
|
||||||
|
|
||||||
# ================ ЛОКАТОРЫ ДЛЯ СТРУКТУРЫ СТОЙКИ ===================
|
# ================ ЛОКАТОРЫ ДЛЯ СТРУКТУРЫ СТОЙКИ ===================
|
||||||
|
|
||||||
# Основной контейнер стойки
|
# Общий контейнер стойки (включает кнопки переключения сторон и MAIN_CONTAINER)
|
||||||
|
RACK_CONTAINER = "//div[contains(@class, 'layout active') and contains(@class, 'row') and contains(@class, 'shrink')]"
|
||||||
|
|
||||||
|
# Основной контейнер стойки (изображение стойки)
|
||||||
MAIN_CONTAINER = "//div[contains(@class, 'layout cabinet')]"
|
MAIN_CONTAINER = "//div[contains(@class, 'layout cabinet')]"
|
||||||
|
|
||||||
# Кнопки переключения сторон
|
# Кнопки переключения сторон
|
||||||
|
|
|
||||||
|
|
@ -433,34 +433,57 @@ class RackPage(BasePage):
|
||||||
|
|
||||||
def should_have_hide_rack_button(self) -> None:
|
def should_have_hide_rack_button(self) -> None:
|
||||||
"""
|
"""
|
||||||
Упрощенная проверка кнопки "Скрыть стойку".
|
Проверка кнопки "Скрыть стойку".
|
||||||
Проверяет только кликабельность и наличие элемента.
|
Проверяет видимость, тултип, кликабельность и эффект скрытия стойки.
|
||||||
"""
|
"""
|
||||||
logger.info("Checking 'Hide rack' button...")
|
logger.info("Checking 'Hide rack' button...")
|
||||||
|
|
||||||
# Проверяем видимость
|
# Проверяем видимость кнопки
|
||||||
self.toolbar.check_button_visibility("hide_rack")
|
self.toolbar.check_button_visibility("hide_rack")
|
||||||
self.toolbar.check_button_tooltip("hide_rack", "Скрыть стойку")
|
self.toolbar.check_button_tooltip("hide_rack", "Скрыть стойку")
|
||||||
|
|
||||||
# Проверяем, что кнопка кликабельна
|
# Получаем общий контейнер стойки до клика
|
||||||
|
rack_container = self.page.locator(RackLocators.RACK_CONTAINER)
|
||||||
|
|
||||||
|
# Проверяем, что контейнер существует
|
||||||
|
expect(rack_container).to_be_visible(timeout=5000)
|
||||||
|
|
||||||
|
# Кликаем на кнопку "Скрыть стойку"
|
||||||
self.toolbar.get_button_by_name("hide_rack").click()
|
self.toolbar.get_button_by_name("hide_rack").click()
|
||||||
self.wait_for_timeout(1000)
|
self.wait_for_timeout(2000) # Даем время для применения стилей
|
||||||
|
|
||||||
|
# Проверяем, что общий контейнер стойки теперь скрыт (имеет display: none)
|
||||||
|
expect(rack_container).to_have_css("display", "none", timeout=5000)
|
||||||
|
logger.info("Rack container successfully hidden (display: none)")
|
||||||
|
|
||||||
|
logger.info("'Hide rack' button test completed successfully")
|
||||||
|
|
||||||
def should_have_show_rack_button(self) -> None:
|
def should_have_show_rack_button(self) -> None:
|
||||||
"""
|
"""
|
||||||
Проверка кнопки "Показать стойку".
|
Проверка кнопки "Показать стойку".
|
||||||
Проверяет наличие, тултип и кликабельность.
|
Проверяет наличие, тултип, кликабельность и эффект показа стойки.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
logger.info("Checking 'Show rack' button...")
|
logger.info("Checking 'Show rack' button...")
|
||||||
|
|
||||||
# Проверяем видимость
|
# Проверяем видимость кнопки
|
||||||
self.toolbar.check_button_visibility("show_rack")
|
self.toolbar.check_button_visibility("show_rack")
|
||||||
self.toolbar.check_button_tooltip("show_rack", "Показать стойку")
|
self.toolbar.check_button_tooltip("show_rack", "Показать стойку")
|
||||||
|
|
||||||
# Проверяем кликабельность
|
# Получаем общий контейнер стойки
|
||||||
|
rack_container = self.page.locator(RackLocators.RACK_CONTAINER)
|
||||||
|
|
||||||
|
# Проверяем, что контейнер существует
|
||||||
|
expect(rack_container).to_be_attached(timeout=5000)
|
||||||
|
|
||||||
|
# Кликаем на кнопку "Показать стойку"
|
||||||
self.toolbar.get_button_by_name("show_rack").click()
|
self.toolbar.get_button_by_name("show_rack").click()
|
||||||
self.wait_for_timeout(1000)
|
self.wait_for_timeout(2000) # Даем время для применения стилей
|
||||||
|
|
||||||
|
# Проверяем, что общий контейнер стойки теперь видим (display не равен "none")
|
||||||
|
expect(rack_container).not_to_have_css("display", "none", timeout=5000)
|
||||||
|
logger.info("Rack container successfully shown (display is not 'none')")
|
||||||
|
|
||||||
|
logger.info("'Show rack' button test completed successfully")
|
||||||
|
|
||||||
# Вспомогательные методы
|
# Вспомогательные методы
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -57,7 +57,7 @@ class TestRackTab:
|
||||||
mp.click_subpanel_item("Test-Rack-01", parent="test-zone")
|
mp.click_subpanel_item("Test-Rack-01", parent="test-zone")
|
||||||
mp.wait_for_timeout(3000)
|
mp.wait_for_timeout(3000)
|
||||||
|
|
||||||
#@pytest.mark.develop
|
@pytest.mark.develop
|
||||||
def test_rack_tab_content(self, browser: Page) -> None:
|
def test_rack_tab_content(self, browser: Page) -> None:
|
||||||
"""Тест содержимого вкладки 'Стойка'.
|
"""Тест содержимого вкладки 'Стойка'.
|
||||||
|
|
||||||
|
|
@ -89,11 +89,8 @@ class TestRackTab:
|
||||||
# Проверка кнопки "Показать стойку"
|
# Проверка кнопки "Показать стойку"
|
||||||
rt.should_have_show_rack_button()
|
rt.should_have_show_rack_button()
|
||||||
|
|
||||||
# Переход в режим редактирования
|
|
||||||
rt.should_be_toolbar_buttons()
|
|
||||||
rt.wait_for_timeout(2000)
|
rt.wait_for_timeout(2000)
|
||||||
|
|
||||||
@pytest.mark.develop
|
|
||||||
def test_rack_tab_switching(self, browser: Page) -> None:
|
def test_rack_tab_switching(self, browser: Page) -> None:
|
||||||
"""Тест переключения между вкладками стойки оборудования.
|
"""Тест переключения между вкладками стойки оборудования.
|
||||||
|
|
||||||
|
|
@ -116,3 +113,7 @@ class TestRackTab:
|
||||||
|
|
||||||
# Проверяем переключение между всеми вкладками стойки
|
# Проверяем переключение между всеми вкладками стойки
|
||||||
rt.check_tab_switching()
|
rt.check_tab_switching()
|
||||||
|
|
||||||
|
# Переход в режим редактирования
|
||||||
|
rt.should_be_toolbar_buttons()
|
||||||
|
rt.wait_for_timeout(2000)
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue