Мне кажется на данном этапе, Вы с ТС должны определиться с уровнями абстракции, а впоследующем уже и о драйвере говорить.
ТС должен сам к этому прийти. Намеков было уже предостаточно.
Сказать честно, я и сам уже потерялся.
Нет, я не имел ввиду, что для каждой страницы надо будет делать тоже самое, я понимаю, что можно будет вынести методы работы с контролами в отдельный класс или группу классов, это и будет частью фреймворка (поидее).
Наверное стоит подвести небольшой итог, из того что уже насобиралось.
- Итак драйвер должен инициализироваться отдельно, для этого должен быть специальный класс пусть это будет всеми любимый синглтон
или чуть расширенный вариант, как например, DriverFactory.
- Так же должен быть слой, в котором будут универсальные методы работы с контролами, которые будут пользоваться драйвером.
- Наконец должны быть страницы и методы работы с ними это уже будет DSL.
Остается только правильно организовать зависимость между слоем с универсальными методами и DriverFactory, на счет этого еще надо подумать.
В целом, такой подход имеет шанс на успех:)?
Я бы не стал обобщать.
Это 2 совершенно разных паттерна.
Но в целом верно.
Это 1 из 2х вариантов. Второй - вызов экшенов прямо из контролов. Например:
setText(inputUsername, name); // common action for all pages
// or
inputUsername.type(name); // control-specific action
Тут нет никакой зависимости. По крайней мере от DriverFactory
. От драйвера - да, но не фабрики. DriverFactory
лишь создает новый драйвер, сокрывая детали инициализации. Кому, как и что с ним делать дальше - уже другой вопрос.
Вам лишь необходимо понять, что все ключевые сущности, которым необходим драйвер, находятся вне зоны ответственности доменного слоя.
Большое спасибо за терпение и за мудрость:)