Приветствую всех, коллеги.
Общаюсь к вам за советом. Переделываю тесты приложения используя page object mode (Selenium, Java)
У меня там очень большое меню, больше 46 пунктов.
Как его правильно описывать в рамках page object mode? Создавать ли для каждого элемента поле с xpath если они примерно одинаковые?
Ранее у меня все элементы были загнаны в ArrayList и Я циклом проходился по ним, подставляя только text()=%MenuName% в каждый из элемента, что делало уникальный xpath. В некоторых местах xpath был не уникальный и Я решал эту проблему через switch-case где по номеру элемента указывал xpath c номером элемента в html.
Как и многое в ООП, модель Page Object — логическая.
Я работал с очень хорошим UX дизайнером, и у нас были внутренние занятия по дизайну. Так мы узнали что известная поговорка про то что "человек может держать в голове семь вещей" относится и к дизайну, и на самом деле человеку семь вещей в голове держать это "мягкий предел", а проблемы начинаются с четырёх. Потом я это находил заглядывая в другие книжки (одна по советам по дизайну, вторая "Думай медленно, решай быстро" Канемана).
Это относится и к меню, и к объектам его описывающим. 46 это много. Лучше разбить на подразделы, и делать так чтобы получались структуры в которых меньше 8 пунктов.
По ООП вообще и по паттернам в частности есть советы выносить что-то в Page Elements, и этих элементов на одной пейдже может быть несколько.
Часто забывают, но Webdriver.Find возвращает объект из которого тоже можно вызывать Find, то есть искать элемент внутри другого элемента. Может это поможет решить проблему не-уникальных XPATH. Хотя лучше всего было б чтобы у них какие-то уникальные локаторы были.