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

Фотография

Дизайн PageObject'ов на Java

webdriver pageobjects java selenium

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

#1 elvis

elvis

    Постоянный участник

  • Members
  • PipPipPip
  • 189 сообщений
  • Город:Tallinn


Отправлено 13 марта 2014 - 14:36

Хотелось бы спросить у людей с опытом - как лучше решить следующую проблему. Существует страница - некоторая форма, которая добавляет новые элементы на страницу и при этом перегружается полностью. Какой дизайн должен быть у данного класса? Делать проверку и инициализировать элементы каждый раз по разному? Разбивать каждый вариант по отдельным PageObjects? Кто сталкивался с подобным поведением, и как решали? У меня сейчас реально здоровый класс получается с пятью вариантами инициализации элементов. Разбивать на отдельные классы не хочется, иначе придётся половину методов дублировать в каждом из них... 


  • 0

#2 vmaximv

vmaximv

    Опытный участник

  • Members
  • PipPipPipPip
  • 350 сообщений

Отправлено 13 марта 2014 - 15:46

А вы код покажите - так нагляднее будет.
  • 0

#3 tab15

tab15

    Активный участник

  • Members
  • PipPip
  • 128 сообщений

Отправлено 13 марта 2014 - 20:50

Если я правильно понял вопрос, то, наверное, можно решить это тем, что метод добавления элемента на страницу будет возвращать саму эту страницу, а в теле метода добавлять ее в PageFactory.

Что то типа

public class FooPage() {
    private WebDriver driver;

    // Кнопка для добавления элемента на страницу
    @FindBy(id = "bar")
    private WebElement addButton;
    
    // конструктор
    public FooPage(WebDriver driver) {
        PageFactory.initElements(driver, this);
        this.driver = driver;
    }

    // метод, добавляющий элемент при нажатии на кнопку, и добавляющий "обновленную" страницу в PageFactory
    public FooPage addElementX() {
        addButton.click();
        
        PageFactory.initElements(driver, this);
        return this.getClass();
    }
}

  • 0

#4 elvis

elvis

    Постоянный участник

  • Members
  • PipPipPip
  • 189 сообщений
  • Город:Tallinn


Отправлено 14 марта 2014 - 07:54

Я пока не работал с PageFactory, но откуда оно будет знать какие из задекларированных элементов инициализировать, а какие - нет?


  • 0

#5 tab15

tab15

    Активный участник

  • Members
  • PipPip
  • 128 сообщений

Отправлено 14 марта 2014 - 08:38

 

 

Я пока не работал с PageFactory, но откуда оно будет знать какие из задекларированных элементов инициализировать, а какие - нет?

PageFactory по умолчанию работает с так называемой "lazy" инициализацией, т.е. те элементы, которые у вас обозначены аннотацией @FindBy Selenium будет искать только при обращении к ним (в моем примере выше addButton будет инициализироваться только при действии addButton.click())

 

Почитайте http://internetka.in...um-page-object/ там все очень наглядно объяснено.


  • 1

#6 elvis

elvis

    Постоянный участник

  • Members
  • PipPipPip
  • 189 сообщений
  • Город:Tallinn


Отправлено 14 марта 2014 - 08:56

Спасибо, это интересно! Думаю то, что мне и нужно. Только вот как представлю, что всё надо переписывать  :shok:


  • 0



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

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

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