from playwright.sync_api import Page from components.base_component import BaseComponent from elements.button_element import Button from elements.text_element import Text from locators.confirm_locators import ConfirmLocators from tools.logger import get_logger logger = get_logger("CONFIRM_WINDOW") class ConfirmComponent(BaseComponent): """Компонент окна подтверждения действий. Предоставляет методы для взаимодействия с диалоговыми окнами подтверждения, содержащими кнопки отмены и подтверждения действия. Атрибуты: page: экземпляр страницы Playwright title: текстовый элемент заголовка окна text: текстовый элемент основного сообщения close_button: кнопка закрытия окна cancel_button: кнопка отмены действия allow_button: кнопка подтверждения действия """ 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): """Нажатие кнопки подтверждения действия. Выполняет клик по кнопке с текстом, переданным в allow_button_text. """ self.allow_button.click() def click_cancel_button(self): """Нажатие кнопки отмены действия. Выполняет клик по кнопке с текстом, переданным в cancel_button_text. """ self.cancel_button.click() def click_close_button(self): """Нажатие кнопки закрытия окна подтверждения.""" self.close_button.click() # Проверки: def check_title(self, title, msg): """Проверка текста заголовка окна подтверждения. Args: title: ожидаемый текст заголовка msg: сообщение об ошибке при несоответствии Raises: AssertionError: если текст заголовка не соответствует ожидаемому """ self.title.check_have_text(title, msg) def check_text(self, text, msg): """Проверка текста сообщения в окне подтверждения. Args: text: ожидаемый текст сообщения msg: сообщение об ошибке при несоответствии Raises: AssertionError: если текст сообщения не соответствует ожидаемому """ self.text.check_have_text(text, msg)