Инициализация драйвера, где нужно делать и почему.

Мне кажется на данном этапе, Вы с ТС должны определиться с уровнями абстракции, а впоследующем уже и о драйвере говорить.

ТС должен сам к этому прийти. Намеков было уже предостаточно.

Сказать честно, я и сам уже потерялся.

Нет, я не имел ввиду, что для каждой страницы надо будет делать тоже самое, я понимаю, что можно будет вынести методы работы с контролами в отдельный класс или группу классов, это и будет частью фреймворка (поидее).

Наверное стоит подвести небольшой итог, из того что уже насобиралось.

  • Итак драйвер должен инициализироваться отдельно, для этого должен быть специальный класс пусть это будет всеми любимый синглтон :slight_smile: или чуть расширенный вариант, как например, DriverFactory.
  • Так же должен быть слой, в котором будут универсальные методы работы с контролами, которые будут пользоваться драйвером.
  • Наконец должны быть страницы и методы работы с ними это уже будет DSL.

Остается только правильно организовать зависимость между слоем с универсальными методами и DriverFactory, на счет этого еще надо подумать.

В целом, такой подход имеет шанс на успех:)?

Я бы не стал обобщать. :slight_smile:

Это 2 совершенно разных паттерна.

Но в целом верно.

Это 1 из 2х вариантов. Второй - вызов экшенов прямо из контролов. Например:

setText(inputUsername, name); // common action for all pages
// or
inputUsername.type(name); // control-specific action

Тут нет никакой зависимости. По крайней мере от DriverFactory. От драйвера - да, но не фабрики. DriverFactory лишь создает новый драйвер, сокрывая детали инициализации. Кому, как и что с ним делать дальше - уже другой вопрос.

Вам лишь необходимо понять, что все ключевые сущности, которым необходим драйвер, находятся вне зоны ответственности доменного слоя.

Большое спасибо за терпение и за мудрость:)