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


(Roy Obenon) #1

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

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


(sidelnikovmike) #2

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

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


(Roy Obenon) #3

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


(sidelnikovmike) #4

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


(Roy Obenon) #5

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


(sidelnikovmike) #6

Скорее да.


(Roy Obenon) #7

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


(sidelnikovmike) #8

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


(Roy Obenon) #9

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


(Srx) #10

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

//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());

(5am) #11

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


(Константин) #12

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

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

Нежели

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

ну и т.п.


(Srx) #13

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