Я искал в Интернете немного, но думал, что могу получить некоторое представление, просто разместив на stackoverflow и посмотрев, есть ли там какие-то мнения.Page Objects - уровень абстракции для методов
мне интересно, если кто-то есть мнение которого предпочтительное между этими двумя способами создания страницы объекта:
public class LoginPage extends PageObject{
public void typeEmail(String email){
driver.findElement(EMAIL_SELECTOR).sendKeys(email);
}
public void typePassword(String pw){
driver.findElement(PASSWORD_SELECTOR).sendKeys(email);
}
public void submit(){
driver.findElement(SUBMIT_SELECTOR).click();
}
}
... и ...
public class LoginPage extends PageObjects{
public void login(String email, String password){
driver.findElement(EMAIL_SELECTOR).sendKeys(email);
driver.findElement(PASSWORD_SELECTOR).sendKeys(email);
driver.findElement(SUBMIT_SELECTOR).click();
}
}
Первоначально , Я думал, что второй способ будет лучше, так как если по какой-то причине изменится входной поток (это маловероятно для входа в систему, но вы можете теоретизировать это для других типов форм), вы можете обновить метод login(), и это изменение повлияет на все тесты, требующие входа в систему.
Однако, если вы хотите проверить условия ошибки или многое другое перед подачей(), второе решение недостаточно гибкое.
Любые идеи будут приветствоваться.
Второе решение больше похоже на «объект страницы». Идея состоит в том, что они должны представлять ** услуги **, которые может выполнять ваша страница. Как и в случае, «логин» является всеобъемлющим сервисом/действием, которое он может выполнять, под ним он должен ввести имя пользователя и пароль и нажать «ОК». Однако доступ к публичным абонентам - это только метод «входа». Они не знают, как «он» входит в систему ». Что конкретно не является гибким в этом? – Arran
Кроме того, последний подход - это то, что планировал архитектор шаблона Page Object. Первый подход, по его определению, не является объектом страницы. – JimEvans
как же вы могли бы сделать такой подход достаточно гибким, чтобы можно было проверять вещи прежде, чем вы нажмете submit? Например, скажите, что вы заполняете форму, а затем получаете предварительный просмотр, и хотите проверить различные элементы этого предварительного просмотра? Вы не хотели бы делать это каждый тест, а только в конкретных. –