Хотелось бы спросить у людей с опытом - как лучше решить следующую проблему. Существует страница - некоторая форма, которая добавляет новые элементы на страницу и при этом перегружается полностью. Какой дизайн должен быть у данного класса? Делать проверку и инициализировать элементы каждый раз по разному? Разбивать каждый вариант по отдельным 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
Тестирование →
Автоматизированное тестирование →
Логин на сайт не работает через selenium, но не в браузереАвтор Trololo, 13 фев 2024 selenium, selenoid |
|
|||
Тестирование →
Автоматизированное тестирование →
Selenium - Functional Testing →
Передача результата функции с параметром request в фикстуру (pytest)Автор Kristall89, 03 фев 2024 selenium, webdriver, python и 2 еще... |
|
|||
Тестирование →
Автоматизированное тестирование →
Selenium - Functional Testing →
Какую версию Java поддерживает Selenium WebDriver?Автор Ksenia, 28 апр 2023 Selenium, Java |
|
|||
Тестирование →
Автоматизированное тестирование →
Настройка запуска Java автотестов в Jenkins.Автор VIRTOK, 15 апр 2023 Java, автотествы, Jenkins |
|
|||
Тестирование →
Автоматизированное тестирование →
Selenium - Functional Testing →
Передать текст в инпутыАвтор vladid, 07 апр 2023 python, selenium |
|
Количество пользователей, читающих эту тему: 0
0 пользователей, 0 гостей, 0 анонимных