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
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
41
42
43
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
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
37
38
39
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
33
34
35
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
94
95
96
97
98
99
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
88
89
90
91
92
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
105
106
107
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
101
102
103
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
84
85
86
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
80
81
82
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
52
53
54
55
56
57
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
59
60
61
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
45
46
47
48
49
50
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
29
30
31
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
63
64
65
def scroll_window_down(self) -> None:
    """Прокручивает содержимое окна вниз."""
    self.scroll_down(ModalWindowLocators.MODAL_WINDOW)

scroll_window_left()

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

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

scroll_window_right()

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

Source code in components\modal_window_component.py
75
76
77
def scroll_window_right(self) -> None:
    """Прокручивает содержимое окна вправо."""
    self.scroll_right(ModalWindowLocators.MODAL_WINDOW)

scroll_window_up()

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

Source code in components\modal_window_component.py
67
68
69
def scroll_window_up(self) -> None:
    """Прокручивает содержимое окна вверх."""
    self.scroll_up(ModalWindowLocators.MODAL_WINDOW)