Класс Page Factory в Selenium — это шаблон проектирования, который помогает реализовать структуру объектной модели страницы (POM). Он обеспечивает простой способ инициализации веб-элементов в классе объектов страницы. Используя класс Page Factory, мы можем улучшить возможность повторного использования кода, улучшить сопровождение тестирования и создавать более читаемые и удобные в обслуживании сценарии автоматизации. Вот некоторые часто используемые методы класса Page Factory с примерами кода:
Метод
initElements: этот метод инициализирует веб-элементы, определенные в классе объектов страницы.
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 {
@FindBy(id = "username")
private WebElement usernameInput;
@FindBy(id = "password")
private WebElement passwordInput;
@FindBy(id = "loginButton")
private WebElement loginButton;
public LoginPage(WebDriver driver) {
PageFactory.initElements(driver, this);
}
// ...
}
initElementsс пользовательскимElementLocatorFactory: этот метод позволяет вам определить собственную фабрику локаторов элементов для поиска элементов.
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.support.FindBy;
import org.openqa.selenium.support.PageFactory;
import org.openqa.selenium.support.pagefactory.DefaultElementLocatorFactory;
import org.openqa.selenium.support.pagefactory.ElementLocatorFactory;
public class HomePage {
@FindBy(id = "welcomeMessage")
private WebElement welcomeMessage;
public HomePage(WebDriver driver) {
ElementLocatorFactory locatorFactory = new DefaultElementLocatorFactory(driver);
PageFactory.initElements(locatorFactory, this);
}
// ...
}
initElementsсFieldDecorator: этот метод позволяет определить собственный декоратор поля для украшения элементов.
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.support.FindBy;
import org.openqa.selenium.support.PageFactory;
import org.openqa.selenium.support.pagefactory.DefaultFieldDecorator;
import org.openqa.selenium.support.pagefactory.FieldDecorator;
public class LoginPage {
@FindBy(id = "username")
private WebElement usernameInput;
@FindBy(id = "password")
private WebElement passwordInput;
@FindBy(id = "loginButton")
private WebElement loginButton;
public LoginPage(WebDriver driver) {
FieldDecorator decorator = new DefaultFieldDecorator(driver);
PageFactory.initElements(decorator, this);
}
// ...
}
Это всего лишь несколько примеров методов, предоставляемых классом Page Factory в Selenium. Фабрика страниц упрощает инициализацию веб-элементов и делает код более читабельным и удобным в обслуживании.