инкапсуляция доходит до абсурда, и придется писать геттеры под каждый элемент или методы вроде addToCartButtonClick().
Поддерживать ООП с SOLID и прочими DRY - это вообще не особо удобно, а что поделать?)
Другое дело, что вместо
addToCartButtonClick
должен быть метод
addProductToChart
, где PageObject уже решит, что ему нужно: кнопку нажать, ползунок потянуть и т.п., тогда это можно будет назвать инкапсуляцией и пропадёт абсурдность.
Если вам не нужны геттеры под каждый элемент, то делайте их private. Очевидно, что хороший ООП-код старается в классе как можно больше скрыть, сделать статическим и константным, а пользователю выставить лишь необходимое и достаточное для решения его задач