Skip to content

ModalWindowComponent

Модуль компонента модального окна. Содержит класс для работы с модальными окнами, их элементами и проверками.

ModalWindowComponent

Bases: BaseComponent

Компонент модального окна. Предоставляет методы для взаимодействия с окном, его содержимым и проверок.

Source code in components\modal_window_component.py
 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
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
class ModalWindowComponent(BaseComponent):
    """Компонент модального окна. Предоставляет методы для взаимодействия с окном,
    его содержимым и проверок."""

    def __init__(self, page: Page):
        super().__init__(page)
        self.toolbar = ToolbarComponent(page, "")
        self.content_items = {}
        self.buttons = []

    # Действия:
    def add_content_item(self, name: str, item: object) -> None:
        """Добавляет элемент содержимого в окно по заданному имени."""

        self.content_items[name] = item

    def get_content_item(self, name: str) -> object | None:
        """Возвращает элемент содержимого по имени или None, если не найден."""

        return self.content_items.get(name)

    def add_toolbar_title(self, title: str) -> None:
        """Добавляет заголовок в панель инструментов модального окна."""

        self.toolbar.add_title(title)

    def add_toolbar_button(self, locator: str, name: str) -> None:
        """Добавляет кнопку в панель инструментов модального окна."""

        self.toolbar.add_tooltip_button(locator, name)

    def add_button(self, locator: str, name: str) -> None:
        """Добавляет кнопку в модальное окно."""

        self.buttons.append(Button(self.page, locator, name))

    def get_button_by_name(self, name: str) -> Button | None:
        """Ищет и возвращает кнопку по имени или None, если не найдена."""

        for button in self.buttons:
            if button.name == name:
                return button
        return None

    def click_button(self, name: str) -> None:
        """Кликает по кнопке с заданным именем. Вызывает ошибку, если не найдена."""

        button = self.get_button_by_name(name)
        if button is None:
            assert False, f"Button with name '{name}' not found"
        button.click()

    def click_toolbar_close_button(self) -> None:
        """Кликает по кнопке закрытия в панели инструментов."""

        self.toolbar.click_button("close")

    def scroll_window_down(self) -> None:
        """Прокручивает содержимое окна вниз."""

        self.scroll_down(ModalWindowLocators.MODAL_WINDOW)

    def scroll_window_up(self) -> None:
        """Прокручивает содержимое окна вверх."""

        self.scroll_up(ModalWindowLocators.MODAL_WINDOW)

    def scroll_window_left(self) -> None:
        """Прокручивает содержимое окна влево."""

        self.scroll_left(ModalWindowLocators.MODAL_WINDOW)

    def scroll_window_right(self) -> None:
        """Прокручивает содержимое окна вправо."""

        self.scroll_right(ModalWindowLocators.MODAL_WINDOW)

    # Проверки:
    def check_window_vertical_scrolling(self) -> bool:
        """Проверяет возможность вертикальной прокрутки окна."""

        return self.is_scrollable_vertically(ModalWindowLocators.MODAL_WINDOW)

    def check_window_horizontal_scrolling(self) -> bool:
        """Проверяет возможность горизонтальной прокрутки окна."""

        return self.is_scrollable_horizontally(ModalWindowLocators.MODAL_WINDOW)

    def check_by_window_title(self) -> None:
        """Проверяет наличие окна по заголовку."""

        self.toolbar.check_toolbar_presence(f"Modal window with '{self.toolbar.title}' is missing")

    def check_button_visibility(self, name: str) -> None:
        """Проверяет наличие кнопки по имени. Вызывает ошибку, если не найдена."""

        button = self.get_button_by_name(name)
        if button is None:
            assert False, f"Button with name '{name}' not found"
        button.check_visibility(f"Button with name '{name}' is missing")

    def check_toolbar_button_visibility(self, name: str) -> None:
        """Проверяет наличие кнопки в панели инструментов."""

        self.toolbar.check_button_visibility(name)

    def check_toolbar_button_tooltip(self, name: str, tooltip: str) -> None:
        """Проверяет подсказку у кнопки в панели инструментов."""

        self.toolbar.check_button_tooltip(name, tooltip)

add_button(locator, name)

Добавляет кнопку в модальное окно.

Source code in components\modal_window_component.py
45
46
47
48
def add_button(self, locator: str, name: str) -> None:
    """Добавляет кнопку в модальное окно."""

    self.buttons.append(Button(self.page, locator, name))

add_content_item(name, item)

Добавляет элемент содержимого в окно по заданному имени.

Source code in components\modal_window_component.py
25
26
27
28
def add_content_item(self, name: str, item: object) -> None:
    """Добавляет элемент содержимого в окно по заданному имени."""

    self.content_items[name] = item

add_toolbar_button(locator, name)

Добавляет кнопку в панель инструментов модального окна.

Source code in components\modal_window_component.py
40
41
42
43
def add_toolbar_button(self, locator: str, name: str) -> None:
    """Добавляет кнопку в панель инструментов модального окна."""

    self.toolbar.add_tooltip_button(locator, name)

add_toolbar_title(title)

Добавляет заголовок в панель инструментов модального окна.

Source code in components\modal_window_component.py
35
36
37
38
def add_toolbar_title(self, title: str) -> None:
    """Добавляет заголовок в панель инструментов модального окна."""

    self.toolbar.add_title(title)

check_button_visibility(name)

Проверяет наличие кнопки по имени. Вызывает ошибку, если не найдена.

Source code in components\modal_window_component.py
107
108
109
110
111
112
113
def check_button_visibility(self, name: str) -> None:
    """Проверяет наличие кнопки по имени. Вызывает ошибку, если не найдена."""

    button = self.get_button_by_name(name)
    if button is None:
        assert False, f"Button with name '{name}' not found"
    button.check_visibility(f"Button with name '{name}' is missing")

check_by_window_title()

Проверяет наличие окна по заголовку.

Source code in components\modal_window_component.py
102
103
104
105
def check_by_window_title(self) -> None:
    """Проверяет наличие окна по заголовку."""

    self.toolbar.check_toolbar_presence(f"Modal window with '{self.toolbar.title}' is missing")

check_toolbar_button_tooltip(name, tooltip)

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

Source code in components\modal_window_component.py
120
121
122
123
def check_toolbar_button_tooltip(self, name: str, tooltip: str) -> None:
    """Проверяет подсказку у кнопки в панели инструментов."""

    self.toolbar.check_button_tooltip(name, tooltip)

check_toolbar_button_visibility(name)

Проверяет наличие кнопки в панели инструментов.

Source code in components\modal_window_component.py
115
116
117
118
def check_toolbar_button_visibility(self, name: str) -> None:
    """Проверяет наличие кнопки в панели инструментов."""

    self.toolbar.check_button_visibility(name)

check_window_horizontal_scrolling()

Проверяет возможность горизонтальной прокрутки окна.

Source code in components\modal_window_component.py
 97
 98
 99
100
def check_window_horizontal_scrolling(self) -> bool:
    """Проверяет возможность горизонтальной прокрутки окна."""

    return self.is_scrollable_horizontally(ModalWindowLocators.MODAL_WINDOW)

check_window_vertical_scrolling()

Проверяет возможность вертикальной прокрутки окна.

Source code in components\modal_window_component.py
92
93
94
95
def check_window_vertical_scrolling(self) -> bool:
    """Проверяет возможность вертикальной прокрутки окна."""

    return self.is_scrollable_vertically(ModalWindowLocators.MODAL_WINDOW)

click_button(name)

Кликает по кнопке с заданным именем. Вызывает ошибку, если не найдена.

Source code in components\modal_window_component.py
58
59
60
61
62
63
64
def click_button(self, name: str) -> None:
    """Кликает по кнопке с заданным именем. Вызывает ошибку, если не найдена."""

    button = self.get_button_by_name(name)
    if button is None:
        assert False, f"Button with name '{name}' not found"
    button.click()

click_toolbar_close_button()

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

Source code in components\modal_window_component.py
66
67
68
69
def click_toolbar_close_button(self) -> None:
    """Кликает по кнопке закрытия в панели инструментов."""

    self.toolbar.click_button("close")

get_button_by_name(name)

Ищет и возвращает кнопку по имени или None, если не найдена.

Source code in components\modal_window_component.py
50
51
52
53
54
55
56
def get_button_by_name(self, name: str) -> Button | None:
    """Ищет и возвращает кнопку по имени или None, если не найдена."""

    for button in self.buttons:
        if button.name == name:
            return button
    return None

get_content_item(name)

Возвращает элемент содержимого по имени или None, если не найден.

Source code in components\modal_window_component.py
30
31
32
33
def get_content_item(self, name: str) -> object | None:
    """Возвращает элемент содержимого по имени или None, если не найден."""

    return self.content_items.get(name)

scroll_window_down()

Прокручивает содержимое окна вниз.

Source code in components\modal_window_component.py
71
72
73
74
def scroll_window_down(self) -> None:
    """Прокручивает содержимое окна вниз."""

    self.scroll_down(ModalWindowLocators.MODAL_WINDOW)

scroll_window_left()

Прокручивает содержимое окна влево.

Source code in components\modal_window_component.py
81
82
83
84
def scroll_window_left(self) -> None:
    """Прокручивает содержимое окна влево."""

    self.scroll_left(ModalWindowLocators.MODAL_WINDOW)

scroll_window_right()

Прокручивает содержимое окна вправо.

Source code in components\modal_window_component.py
86
87
88
89
def scroll_window_right(self) -> None:
    """Прокручивает содержимое окна вправо."""

    self.scroll_right(ModalWindowLocators.MODAL_WINDOW)

scroll_window_up()

Прокручивает содержимое окна вверх.

Source code in components\modal_window_component.py
76
77
78
79
def scroll_window_up(self) -> None:
    """Прокручивает содержимое окна вверх."""

    self.scroll_up(ModalWindowLocators.MODAL_WINDOW)