Здравствуйте!
Никак не могу понять, как применить паттерн Page Object в моём случае и применим ли он вообще. Пишу автотесты для крупного портала в связке Selenium/C#/NUnit. Портал резнесён на несколько поддоменов, имеет много разных разделов, но все они взаимосвязаны и на них есть огромное количество одинаковых элементов (не блоков, а именно элементов) в разных комбинациях на разных страницах. То есть, допустим, имеются элементы "A", "B", "C", и "D", и их наличие на страницах выглядит примерно следующим образом: страница 1 - A, C, D; страница 2 - B, C, D; страница 3 - C; страница 4 - B, D и т.д.
Получается, что если, в соответствии с POM, создавать отдельные классы для каждой страницы (коих в сумме наберётся под сотню) и объявлять в них эти элементы, то будут тонны повторяемого кода. Разбиение на блоки тоже не подходит, потому что, как я уже упоминал выше, набор элементов в пределах однотипного блока на разных страницах также может варьироваться.
Пока единственный вариант, который мне видится наименьшим из зол, - описать все используемые тестами элементы в одном классе. Недостаток такого подхода очевиден - огромный класс с сотнями свойств, именовать которые приходится в стиле "MainSearchPageLeftColomnFilterPriceMin", иначе в этом нагромождении будет вообще непонятно, что и откуда. Но что-то мне подсказывает, что есть варианты гораздо лучше.
Извиняюсь, если подобное обсуждение здесь уже есть, но не смог найти.