t.me/atinfo_chat Telegram группа по автоматизации тестирования

Нужна оценка кода (WebDriver, PageObject)

Добрый день.
Решил так сказать бурно взяться за написание норм. кода (используя WebDriver, PageObject). Есть сайт, нужно пройти по вкладкам и добраться до списка всех телефонов, затем с первых 3-х страниц, взять названия и цену всех телефонов которые с пометкой “Топ продаж” и запомнить эту инфу (я записываю её в txt файл), вот как то так )).
Буду благодарен за норм критику и подсказки по совершенствованию кода.

ссылка на код: https://github.com/comrozetka/first

Так при беглом рассмотрении:
Пакеты называйте мальенькими буквами(code conventions)
Зачем храните в переменных класса станицы?

Надо конечно глубже смотреть.

Зачем храните в переменных класса станицы?
Чтобы не загромождать код тестового метода

И загромождать код класса)) если переменная нужна только в методе - заводите ее в методе.

Еще вопрос, обязательно ли нужно возвращать в методе перехода на другую страницу, объект второй страницы?

Скорее да.

Ну а по большому оно то ни на что не влияет, просто хороший тон!

Это вы про что? Про возвращение обьектов? Это не хороший тон, а правильный подход. Тем самым вы как бы говорите - после исполнения этого метода переходим на другую страницу

Просто в некоторых реализациях встречал без возвращения объекта следующей страницы

Я тоже так сказать начинающий и тоже сделано без возвращения новой страницы. Работает и так, а в чем разница не знаю. Мой подход:

//Steps on page 1
accoutPage = new AccoutPage(driver);
accoutPage.navigateAccounts();
accoutPage.switchToiFrame2();
accoutPage.typeSearch(accname);
Assert.assertEquals(userOne, accoutPage.getOwner());

//Steps on page 2
contactPage = new ContactPage(driver);
contactPage.navigateContacts();
contactPage.switchToiFrame1();
contactPage.typeSearch(contname);
Assert.assertEquals(userTwo, contactPage.getOwner());

без возвращения новой страницы теряется контекст, после вызова метода - не понятно на какой странице вы находитесь.

Это тот случай когда PageObject(а точнее ООП), вам помогает писать тесты которые выглядят посимпатичнее так сказать.
Согласитесь вот так(пример c#) выглядит лучше

new Pages.MainPage(driver)
   .Register()
   .OpenMenu()
   .SendNewMail();

Нежели

MainPage mainpage = new MainPage(driver);
mainpage.Register();
ClientPage openmenu = new ClientPage(driver);
openmenu.OpenMenu();

ну и т.п.

Спасибо за разьяснение. Это толко с “эстетической стороны красивее” или это влияет както на скорость выполнения кода / использования ресурсов