Ответ
Page Object (Page Object Model, POM) — это паттерн проектирования для автоматизации UI-тестов, который инкапсулирует структуру и поведение веб-страницы в отдельном классе.
Основная идея: Отделить тестовую логику от деталей взаимодействия с элементами страницы (локаторов, методов WebDriver).
Преимущества:
- Повторное использование кода: Логика работы со страницей пишется один раз.
- Устойчивость к изменениям: При изменении UI правки вносятся только в класс Page Object, а не во все тесты.
- Читаемость: Тесты становятся более декларативными и понятными.
Пример класса Page Object для страницы логина (Java + Selenium):
public class LoginPage {
private WebDriver driver;
private By usernameField = By.id("username");
private By passwordField = By.id("password");
private By loginButton = By.id("login-btn");
public LoginPage(WebDriver driver) {
this.driver = driver;
}
public void enterUsername(String username) {
driver.findElement(usernameField).sendKeys(username);
}
public void enterPassword(String password) {
driver.findElement(passwordField).sendKeys(password);
}
public HomePage clickLogin() {
driver.findElement(loginButton).click();
return new HomePage(driver); // Возвращает Page Object следующей страницы
}
// Композитный метод для частого сценария
public HomePage loginAs(String username, String password) {
enterUsername(username);
enterPassword(password);
return clickLogin();
}
}
Использование в тесте:
LoginPage loginPage = new LoginPage(driver);
HomePage homePage = loginPage.loginAs("testUser", "password123");
assertTrue(homePage.isUserLoggedIn());