"""Модуль компонента окна подтверждения действий. Содержит класс ConfirmComponent для взаимодействия с окном подтверждения, включая кнопки подтверждения, отмены и закрытия, а также проверки текста. """ from playwright.sync_api import Page from tools.logger import get_logger from locators.confirm_locators import ConfirmLocators from elements.text_element import Text from elements.button_element import Button from components.base_component import BaseComponent logger = get_logger("CONFIRM_WINDOW") class ConfirmComponent(BaseComponent): """Компонент окна подтверждения действий.""" def __init__(self, page: Page, cancel_button_text: str, allow_button_text: str): """Инициализация компонента. Args: page: Экземпляр страницы Playwright. cancel_button_text: Текст кнопки отмены. allow_button_text: Текст кнопки подтверждения. """ super().__init__(page) self.title = Text(page, ConfirmLocators.TITLE, "confirm title") self.text = Text(page, ConfirmLocators.TEXT, "confirm text") self.close_button = Button(page, ConfirmLocators.BUTTON_CLOSE, "confirm close button") self.cancel_button = Button( page, page.get_by_role("button", name=cancel_button_text).first, "confirm cancel button" ) self.allow_button = Button( page, page.get_by_role("button", name=allow_button_text).first, "confirm allow button" ) # Действия: def click_allow_button(self) -> None: """Нажимает кнопку подтверждения действия.""" self.allow_button.click() def click_cancel_button(self) -> None: """Нажимает кнопку отмены действия.""" self.cancel_button.click() def click_close_button(self) -> None: """Нажимает кнопку закрытия окна подтверждения.""" self.close_button.click() def scroll_window_left(self) -> None: """Прокручивает содержимое окна влево.""" self.scroll_left(ConfirmLocators.CONFIRM) def scroll_window_right(self) -> None: """Прокручивает содержимое окна вправо.""" self.scroll_right(ConfirmLocators.CONFIRM) # Проверки: def check_title(self, title: str, msg: str) -> None: """Проверяет текст заголовка окна подтверждения. Args: title: Ожидаемый текст заголовка. msg: Сообщение при ошибке. """ self.title.check_have_text(title, msg) def check_text(self, text: str, msg: str) -> None: """Проверяет текст сообщения в окне подтверждения. Args: text: Ожидаемый текст сообщения. msg: Сообщение при ошибке. """ self.text.check_have_text(text, msg) def check_window_horizontal_scrolling(self) -> bool: """Проверяет возможность горизонтальной прокрутки окна.""" return self.is_scrollable_horizontally(ConfirmLocators.CONFIRM) def should_be_cancel_button(self) -> None: """Проверяет наличие и видимость кнопки Отмены.""" self.cancel_button.check_presence("Cancel button is missing") def should_be_allow_button(self) -> None: """Проверяет наличие и видимость кнопки Подтверждения.""" self.allow_button.check_presence("Allow button is missing") def check_cancel_button_text(self, expected_text: str) -> None: """Проверяет текст кнопки Отмены.""" self.cancel_button.check_have_text(expected_text, "Cancel button text doesn't match expected") def check_allow_button_text(self, expected_text: str) -> None: """Проверяет текст кнопки Подтверждения.""" self.allow_button.check_have_text(expected_text, "Allow button text doesn't match expected")