Что такое PageObject и PageFactory?
PageObject и PageFactory - это концепции, используемые в автоматизации тестирования для улучшения структуры и поддерживаемости автоматизированных тестов, особенно в среде Selenium WebDriver.
PageObject:
Определение: PageObject - это шаблон проектирования, который используется для представления веб-страниц в терминах объектов. Каждая веб-страница представлена как объект, который содержит методы для взаимодействия с элементами на странице.
Преимущества:
Улучшает читаемость кода и поддерживаемость тестов.
Уменьшает дублирование кода, так как логика взаимодействия с элементами выносится в методы PageObject.
Скрывает детали реализации страницы от тестового сценария.
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
Was this helpful?