Перейти к содержимому

Фотография

PageObject и @Steps алюра

selenium java PageObject

  • Авторизуйтесь для ответа в теме
Сообщений в теме: 4

#1 Test123

Test123

    Новый участник

  • Members
  • Pip
  • 8 сообщений
  • ФИО:Тест Тест

Отправлено 16 января 2020 - 11:46

Коллеги, добрый день!

В автоматизации довольно недавно. И это мой первый проект, стараюсь сделать все по уму.

Патерн PageObject, а в частности PageFactory показался мне интересным из-за возможностей инкапсуляции.

 

Описал страницы.
Написал свой первый тест.
Выглядит он примерно так:

@Test
public void refuse_to_client() {
    MainPage mainPage = new MainPage(driver);
    mainPage.loginToSystemByUser() //Логинимся на страницу 1
        .openNewClient(client_ID).goToSystemDecisionPage().decisionRefuse() //Отказываем на странице 2
            .addComment("Клиент некрасивый") //Добавляем комментарий по отказу на странице 3
                .sendToWork() //Жмем Ок на странице 2
                     .sendToProcessing() //Отправляем на странице 1 
}

Все выглядит относительно красиво. Но когда я стал крепить отчетность к этому тесту в виде Allure я понял, что вместо системы Test > Steps > Pages сделал просто Test > Pages, что не совсем корректно. Фигня вопрос подумал я и написал вариант №2

@Test
public void refuse_to_client() {
    login();
    appRefuse();
    appDecisiobRefuse();
    addingComment();
    pressOKButton();
    sendToProcessing();
}

@Step("Логинимся")
private void login() {
    LoginPage loginPage = new LoginPage(driver)
    loginPage.loginToSystemByUser() 
}

@Step("Поиск заявки")
private void appSearch() {
    MainPage mainPage = new MainPage(driver)
    mainPage.openNewClient(appno);
}

@Step("Пользователю отказывают")
private void clientDecisionRefuse() {
    appDecisionPage appDecisionPage = new AppDecisionPage(driver);
    appDecisionPage.goToSystemDecisionPage().decisionRefuse();
}

@Step("Добавление комментария по отказу")
private void addingComment() {
    CommentPage commentPage = new CommentPage(driver);
    commentPage.addComment("Сам ты некрасивый");
}

@Step("Нажать ОК")
private void pressOkButton() {
    FaTsmPage faTsmPage = new FaTsmPage(driver);
    faTsmPage.sendToWork();
}

@Step("Отправка в обработку")
private void sendToProcessing() {
    appDecisionPage appDecisionPage = new AppDecisionPage(driver);
    appDecisionPage.SendToProcessing();
}

И вот тут у меня возник вопрос из-за того, что приходится создавать новые экземпляры страниц, а некоторые приходится создавать дважды (например appDecisionPage) как склеить @Step Allure и подход PageFactory?
 


  • 0

#2 Test123

Test123

    Новый участник

  • Members
  • Pip
  • 8 сообщений
  • ФИО:Тест Тест

Отправлено 16 января 2020 - 12:10

Вопрос поставлен наверное не совсем корректно.
Система прыгает из-за нужд пользователя по страницам слишком быстро.
И меня раздражает создавать новые объекты страниц, объявлять их каждый раз в новом @Step
по сравнению с формой в варианте 1 вариант 2 очень не удобный.
По сути @Step зависимые,если не сделаешь @Step1 то не выполнится @Step2.
И в Step1 метод loginPage.loginToSystemByUser() возвращает MainPage, но мне все равно необходимо его объявить в @Step2 и т.д.
Как это можно обогнуть?


  • 0

#3 user12

user12

    Специалист

  • Members
  • PipPipPipPipPip
  • 894 сообщений
  • ФИО:Виктор
  • Город:Минск


Отправлено 16 января 2020 - 13:29

У тебя был вариант 1 и вариант 2

вариант 1 более-менее, вариант 2 - глупость

 

Давай сначала разберемся с понятиями. Что такое шаг ?

Шаг - это какое-то действие, которое необходимо для проверки

Например, залогинется - у тебя это loginToSystemByUser

 

Почему ты не можешь повесить на loginToSystemByUser аннотацию Step ?

Зачем ты создаешь вот это:

 

@Step("Логинимся")
private void login() {
LoginPage loginPage = new LoginPage(driver)
loginPage.loginToSystemByUser()
}

 


  • 0

#4 Test123

Test123

    Новый участник

  • Members
  • Pip
  • 8 сообщений
  • ФИО:Тест Тест

Отправлено 16 января 2020 - 13:52

 

У тебя был вариант 1 и вариант 2

вариант 1 более-менее, вариант 2 - глупость

 

Давай сначала разберемся с понятиями. Что такое шаг ?

Шаг - это какое-то действие, которое необходимо для проверки

Например, залогинется - у тебя это loginToSystemByUser

 

Почему ты не можешь повесить на loginToSystemByUser аннотацию Step ?

Зачем ты создаешь вот это:

 

@Step("Логинимся")
private void login() {
LoginPage loginPage = new LoginPage(driver)
loginPage.loginToSystemByUser()
}

 

 

 

Интернет говорит некорректно тестовые шаги писать в объектах страниц. Что нужно разделять Steps и PageObject


  • 0

#5 user12

user12

    Специалист

  • Members
  • PipPipPipPipPip
  • 894 сообщений
  • ФИО:Виктор
  • Город:Минск


Отправлено 16 января 2020 - 14:02

Интернет говорит некорректно тестовые шаги писать в объектах страниц. Что нужно разделять Steps и PageObject

 

 

 
прув будет, а не просто "интернет говорит" ?

  • 0



Темы с аналогичным тегами selenium, java, PageObject

Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных