Для реализации паттерна Page Object создадим классы для каждой страницы сайта, а также классы для элементов на страницах. Например, класс LoginPage для страницы входа, класс PaymentPage для страницы выбора способа оплаты и т.д.
Пример класса LoginPage:
class LoginPage: def __init__(self, driver): self.driver = driver def enter_username(self, username): self.driver.find_element_by_id("username").send_keys(username) def enter_password(self, password): self.driver.find_element_by_id("password").send_keys(password) def click_login_button(self): self.driver.find_element_by_id("login_button").click()
Пример класса PaymentPage:
class PaymentPage: def __init__(self, driver): self.driver = driver def select_payment_method(self, method): self.driver.find_element_by_id(method).click() def click_continue_button(self): self.driver.find_element_by_id("continue_button").click() def get_amount_text(self): return self.driver.find_element_by_id("amount").text def get_phone_number(self): return self.driver.find_element_by_id("phone_number").text def get_card_input_labels(self): labels = [] elements = self.driver.find_elements_by_class_name("card_input_label") for element in elements: labels.append(element.text) return labels def get_payment_system_icons(self): icons = [] elements = self.driver.find_elements_by_class_name("payment_system_icon") for element in elements: icons.append(element.get_attribute("src")) return icons
Теперь можно использовать эти классы для написания тестов. Например, для проверки надписей в незаполненных полях можно написать следующий тест:
def test_empty_fields_labels(driver): payment_page = PaymentPage(driver) payment_page.select_payment_method("mobile_services") empty_fields_labels = payment_page.get_card_input_labels() assert "Card number" in empty_fields_labels assert "Expiration date" in empty_fields_labels assert "CVV" in empty_fields_labels
Для проверки корректности отображения суммы, номера телефона и иконок платежных систем можно написать аналогичные тесты, используя методы класса PaymentPage.
Таким образом, паттерн Page Object позволяет структурировать код тестов и упрощает его поддержку и расширение.
Обратите внимание: ответы, предоставляемые искусственным интеллектом, могут не всегда быть точными. Не рассчитывайте на них в критически важных областях, таких как медицина, юриспруденция, финансы или в вопросах, связанных с безопасностью. Для важных решений всегда обращайтесь к квалифицированным специалистам. Администрация сайта не несет ответственности за контент, сгенерированный автоматически.