Сначала вы должны решить, действительно ли вам нужно пройти через пользовательский интерфейс. Вероятно и особенно, если вы хотите убедить заинтересованную сторону в том, что эти спецификации действительно используют систему. Но позже вы можете захотеть использовать систему на уровне домена или прямо под пользовательским интерфейсом (например, контроллер в архитектуре MVC).
Возможно, вы даже захотите переключаться между двумя версиями
В любом случае вы хотите абстрагироваться от жесткой связи между вашими определениями шагов и реальным приложением (будь то страница или контроллер).
Один из способов сделать это - использовать шаблон объекта Page , который в основном является классом-оберткой для тестируемой страницы. Этот класс предоставляет удобный интерфейс для взаимодействия со страницей (например, метод для отправки формы, свойства для заполнения формы и другие свойства для запроса страницы на содержание).
То, как вы на самом деле взаимодействуете или автоматизируете, страница «скрыта» внутри объекта страницы, и нужно менять это место только в том случае, если (когда? :)) она меняется.
Конечно, это не идеально, у вас все еще есть "жесткая" связь со страницей, но теперь она абстрагируется в отдельный класс, и это, по крайней мере, немного лучше.
Подсказка - постараться сделать ваши определения шагов короткими. Супер короткая - одно утверждение или строка. И переместить остальную часть логики вниз на уровень автоматизации.
Также не пропустите эту отличную презентацию Мэтта Уинна, которая показывает это в отличной форме