Может кто пытался сделать Page Object для случая когда в страницы динамически добавляются блоки. Можно конечно сделать чтобы эти блоки всегда были в этом Page object, но интересно рассмотреть другие варианты. Возможно есть альтернативный паттерн
Если с использованием композиции добавлять блоки на страницу, то они как бы всегда там будут, даже если на странице этого блока не должно быть, пока вы строчку с ним не уберёте из кода страницы.
Автор же хочет, чтобы эти блоки динамически добавлялись в код страницы, в зависимости от чего-то там.
А я вот считаю, что логику поведения нельзя зашивать в код. Она должна быть только на уровне тестов. В противном случае, такой фреймворк и тесты на нем будет тяжело поддерживать. Таким образом, я бы просто сделал отдельный класс на этот динамический элемент и в тесте описал примерно следующее
если например есть кукисы
проверить, что такого блока нет
Второй тест
если нет кукисов
проверить, что такой блок есть
проверить, что клик на блок открывает страницу N.
Просто не усложняйте и держите мысль о том, что логика в тестовых методах - это анти паттерн.
Да, согласен что излишество, но иногда интересно поэкспериментировать. Вообще подобное поведение я реализовал с помощью Generics, в случае когда один попап может вернуть несколько страниц, для того чтобы поддерживать Fluent Interface и не писать закрытие попапа для каждой страницы.
Но в конкретном случае нам нужно при открытии страницы передать тип блока и блоку передать тип страницы чтоб могли на нее вернутся по контексту, в итоге мы замыкаемся по кругу PageObject<Frame<PageObject>>