Хотелось бы спросить у людей с опытом - как лучше решить следующую проблему. Существует страница - некоторая форма, которая добавляет новые элементы на страницу и при этом перегружается полностью. Какой дизайн должен быть у данного класса? Делать проверку и инициализировать элементы каждый раз по разному? Разбивать каждый вариант по отдельным PageObjects? Кто сталкивался с подобным поведением, и как решали? У меня сейчас реально здоровый класс получается с пятью вариантами инициализации элементов. Разбивать на отдельные классы не хочется, иначе придётся половину методов дублировать в каждом из них...
#1
Отправлено 13 марта 2014 - 14:36
#2
Отправлено 13 марта 2014 - 15:46
#3
Отправлено 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(); } }
#4
Отправлено 14 марта 2014 - 07:54
Я пока не работал с PageFactory, но откуда оно будет знать какие из задекларированных элементов инициализировать, а какие - нет?
#5
Отправлено 14 марта 2014 - 08:38
Я пока не работал с PageFactory, но откуда оно будет знать какие из задекларированных элементов инициализировать, а какие - нет?
PageFactory по умолчанию работает с так называемой "lazy" инициализацией, т.е. те элементы, которые у вас обозначены аннотацией @FindBy Selenium будет искать только при обращении к ним (в моем примере выше addButton будет инициализироваться только при действии addButton.click())
Почитайте http://internetka.in...um-page-object/ там все очень наглядно объяснено.
#6
Отправлено 14 марта 2014 - 08:56
Спасибо, это интересно! Думаю то, что мне и нужно. Только вот как представлю, что всё надо переписывать
Темы с аналогичным тегами webdriver, pageobjects, java, selenium
Количество пользователей, читающих эту тему: 0
0 пользователей, 0 гостей, 0 анонимных