Честно говоря, вижу такой подход (код) впервые в жизни.
Вы используете какой-нибудь открытый фреймворк? Или свой?
привет, в общем использую ООП для написания…вроде Patern используется…
я делаю так обычно : - главный класс с описанием тестов и вызовом их
второй - для самих действий, которые будут вызываться - driver.findElement(By…)
и третий , который возвращает значения для assert…
В целом, интересный подход, но немного “нестандартный”.
Я вам предлагаю, ознакомится с видео по паттерну PageObject от товарища @polusok
Еще есть пример работы с PageObject от @mamax
Посмотрите как оформлен код, там всего несколько классов с PageObject’ами.
Я думаю, он не откажется вам помочь разобраться с кодом. Можно спросить в этой теме: Не могу получить текст любого веб элемента с сайта http://booking.uz.gov.ua (JAVA) - #11 от пользователя mamax
я PageObject и использую
я просто редактировал названия классов, закидывая сюда, что бы конфиденциальность нарушить
Expected hotel = 1.Select_("Homepage selecting");
Expected calendar = 1.Select_("Click on calendar");
Может быть множество модификаций PageObject. Это правильно, когда паттерн затачивается под конкретную идею.
Тем не менее, после такой заточки, код становится не совсем “стандартным”. Стандартным тут в кавычках, потому что на самом деле официальных стандартов нет.
Вот например, предположим есть страница поиска отелей по дате, с выбором даты по календарю. Тогда бы, тест выглядит приблизительно так. Это псевдо-Java
Testcase: Search hotels
List<String> expectedHotels = new List<String>();
{
"Hotel 1",
"Hotel 2",
"Hotel 3",
}
HotelPage hotelPage = new HotelPage();
hotelPage.selectDate(DateTime.getToday()); /* X1 */
HotelSearchResultPage searchResult = hotelPage.search(); /* X2 */
List<String> actualAvailableHotels = searchResult.getAvailableHotelsList(); /* X3 */
Assert(expectedHotels, actualAvailableHotels);
Я всего вашего кода не видел, может у вас так и происходит, но позвольте поясню пример.
В метке /* X1 */ выполняется запрос к конкретному действию PageObject. Передается именно конкретный параметр даты.
/* X2 */ В обычной реализации PageObject, методы, они же действия возвращают либо типы данных языка, т.е. массивы или строки, либо другие PageObject’ы. Обычно, другие пейджобжекты возвращаются в момент перехода на другую страницу. В данном примере, как раз вернулся пейджобжект на HotelSearchResultPage searchResult.
/* X3 */ Есть разные подходы в применении проверок. Лично я делаю так: методы PageObject возвращаются в виде обычных типов языка: числа, строки, массивы и DTO. Далее, я явно сравниваю актуальные и ожидаемые данные.
Подчеркиваю, что это лишь один из множества подходов.
Ну и по этому участку кода,
Обычно, технические детали реализации теста прячутся внутрь действий (методов) PageObject.
Т.е. строки выше и имплисит вейты, было бы неплохо поместить в метод hotelPage.selectDate