Что такое PageObject и PageFactory?

PageObject и PageFactory - это концепции, используемые в автоматизации тестирования для улучшения структуры и поддерживаемости автоматизированных тестов, особенно в среде Selenium WebDriver.

  1. PageObject:

    • Определение: PageObject - это шаблон проектирования, который используется для представления веб-страниц в терминах объектов. Каждая веб-страница представлена как объект, который содержит методы для взаимодействия с элементами на странице.

    • Преимущества:

      • Улучшает читаемость кода и поддерживаемость тестов.

      • Уменьшает дублирование кода, так как логика взаимодействия с элементами выносится в методы PageObject.

      • Скрывает детали реализации страницы от тестового сценария.

  2. PageFactory:

    • Определение: PageFactory - это часть библиотеки Selenium WebDriver, предоставляющая аннотации для автоматизации процесса инициализации элементов страницы в PageObject.

    • Преимущества:

      • Автоматизирует процесс инициализации элементов страницы, упрощая написание кода.

      • Позволяет использовать аннотации, такие как @FindBy, для указания локаторов элементов на странице.

Пример использования PageObject и PageFactory в Java с использованием Selenium WebDriver:

import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.support.FindBy;
import org.openqa.selenium.support.PageFactory;

public class LoginPage {
    
    private WebDriver driver;

    @FindBy(id = "username")
    private WebElement usernameInput;

    @FindBy(id = "password")
    private WebElement passwordInput;

    @FindBy(id = "loginButton")
    private WebElement loginButton;

    public LoginPage(WebDriver driver) {
        this.driver = driver;
        PageFactory.initElements(driver, this);
    }

    public void enterUsername(String username) {
        usernameInput.sendKeys(username);
    }

    public void enterPassword(String password) {
        passwordInput.sendKeys(password);
    }

    public void clickLoginButton() {
        loginButton.click();
    }
}

В этом примере LoginPage - это класс PageObject, представляющий страницу веб-приложения. Аннотации @FindBy используются для указания локаторов элементов на странице, и методы PageObject используются для взаимодействия с этими элементами. В конструкторе PageObject инициализируются элементы страницы с использованием PageFactory.

Last updated