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)