Skip to content

NavigationPanelComponent

NavigationPanelComponent

Bases: BaseComponent

Компонент панели навигации.

Предоставляет методы для взаимодействия с элементами навигационной панели. Наследуется от BaseComponent.

Атрибуты

page: Page - экземпляр страницы Playwright

Source code in components\navbar_component.py
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
class NavigationPanelComponent(BaseComponent):
    """Компонент панели навигации.

    Предоставляет методы для взаимодействия с элементами навигационной панели.
    Наследуется от BaseComponent.

    Атрибуты:
        page: Page - экземпляр страницы Playwright
    """

    def __init__(self, page: Page):
        """Инициализация компонента панели навигации.

        Args:
            page: Page - экземпляр страницы Playwright
        """
        super().__init__(page)

    # Действия:
    def get_item_names(self, locator):
        """Получает тексты всех элементов по указанному локатору.

        Args:
            locator: Локатор для поиска элементов

        Returns:
            list: Список текстов элементов
        """
        loc = self.get_locator(locator)
        return loc.all_inner_texts()

    def click_item(self, locator, item_name):
        """Кликает по элементу с указанным текстом.

        Args:
            locator: Локатор для поиска элемента
            item_name: Текст элемента для клика
        """
        loc = self.get_locator(locator)
        loc.get_by_text(item_name).click()

    def click_sub_item(self, locator, sublevel_number, item_name):
        """Кликает по вложенному элементу с указанным текстом.

        Args:
            locator: Локатор для поиска элемента
            sublevel_number: Уровень вложенности (1 или 2)
            item_name: Текст элемента для клика

        Raises:
            ValueError: Если указан недопустимый уровень вложенности
        """
        root_locator = self.get_locator(NavigationPanelLocators.NODE_ROOT)
        children_locator = self.get_locator(NavigationPanelLocators.NODE_CHILDREN)

        loc = self.get_locator(locator)

        if sublevel_number == 1:
            loc.locator(root_locator).get_by_text(item_name).click()
        elif sublevel_number == 2:
            loc.locator(children_locator).locator(root_locator).get_by_text(item_name).click()
        else:
            raise ValueError("the navigation panel has two levels of nesting only")

    # Проверки:
    def check_item_visibility(self, locator, item_name):
        """Проверяет видимость элемента с указанным текстом.

        Args:
            locator: Локатор для поиска элемента
            item_name: Текст элемента для проверки
        """
        loc = self.get_locator(locator).get_by_text(item_name)
        msg = f"Navigation panel item '{item_name}' is not visible"
        self.check_presence(loc, msg)

__init__(page)

Инициализация компонента панели навигации.

Parameters:

Name Type Description Default
page Page

Page - экземпляр страницы Playwright

required
Source code in components\navbar_component.py
21
22
23
24
25
26
27
def __init__(self, page: Page):
    """Инициализация компонента панели навигации.

    Args:
        page: Page - экземпляр страницы Playwright
    """
    super().__init__(page)

check_item_visibility(locator, item_name)

Проверяет видимость элемента с указанным текстом.

Parameters:

Name Type Description Default
locator

Локатор для поиска элемента

required
item_name

Текст элемента для проверки

required
Source code in components\navbar_component.py
76
77
78
79
80
81
82
83
84
85
def check_item_visibility(self, locator, item_name):
    """Проверяет видимость элемента с указанным текстом.

    Args:
        locator: Локатор для поиска элемента
        item_name: Текст элемента для проверки
    """
    loc = self.get_locator(locator).get_by_text(item_name)
    msg = f"Navigation panel item '{item_name}' is not visible"
    self.check_presence(loc, msg)

click_item(locator, item_name)

Кликает по элементу с указанным текстом.

Parameters:

Name Type Description Default
locator

Локатор для поиска элемента

required
item_name

Текст элемента для клика

required
Source code in components\navbar_component.py
42
43
44
45
46
47
48
49
50
def click_item(self, locator, item_name):
    """Кликает по элементу с указанным текстом.

    Args:
        locator: Локатор для поиска элемента
        item_name: Текст элемента для клика
    """
    loc = self.get_locator(locator)
    loc.get_by_text(item_name).click()

click_sub_item(locator, sublevel_number, item_name)

Кликает по вложенному элементу с указанным текстом.

Parameters:

Name Type Description Default
locator

Локатор для поиска элемента

required
sublevel_number

Уровень вложенности (1 или 2)

required
item_name

Текст элемента для клика

required

Raises:

Type Description
ValueError

Если указан недопустимый уровень вложенности

Source code in components\navbar_component.py
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
def click_sub_item(self, locator, sublevel_number, item_name):
    """Кликает по вложенному элементу с указанным текстом.

    Args:
        locator: Локатор для поиска элемента
        sublevel_number: Уровень вложенности (1 или 2)
        item_name: Текст элемента для клика

    Raises:
        ValueError: Если указан недопустимый уровень вложенности
    """
    root_locator = self.get_locator(NavigationPanelLocators.NODE_ROOT)
    children_locator = self.get_locator(NavigationPanelLocators.NODE_CHILDREN)

    loc = self.get_locator(locator)

    if sublevel_number == 1:
        loc.locator(root_locator).get_by_text(item_name).click()
    elif sublevel_number == 2:
        loc.locator(children_locator).locator(root_locator).get_by_text(item_name).click()
    else:
        raise ValueError("the navigation panel has two levels of nesting only")

get_item_names(locator)

Получает тексты всех элементов по указанному локатору.

Parameters:

Name Type Description Default
locator

Локатор для поиска элементов

required

Returns:

Name Type Description
list

Список текстов элементов

Source code in components\navbar_component.py
30
31
32
33
34
35
36
37
38
39
40
def get_item_names(self, locator):
    """Получает тексты всех элементов по указанному локатору.

    Args:
        locator: Локатор для поиска элементов

    Returns:
        list: Список текстов элементов
    """
    loc = self.get_locator(locator)
    return loc.all_inner_texts()