Используя GEB, я использовал шаблон объекта страницы для статической инкапсуляции информации о различных страницах.
Затем я реорганизовал свой код GEB для использования из отдельного класса, чтобы я мог инкапсулировать общие команды, используя вызовы методов.
Например, у меня будет метод login (), который вызовет соответствующий код GEB для входа на сайт, который я тестирую. Затем я бы использовал другие общие функции, использующие вызовы методов для класса TestHelper.
Я хотел перенести эти общие функции на страницы, на которые они действуют. Например, страница поиска будет иметь метод поиска, страница входа будет иметь метод входа. Таким образом, я могу создать библиотеку страниц, в которой есть все общие функции для использования в нескольких проектах GEB. Теперь, чтобы сделать это, каждая страница должна иметь дескриптор на geb.Browser, поэтому мне теперь нужно было бы создать экземпляр каждой страницы в тестовой настройке. При этом я больше не могу использовать стандартный шаблон объекта страницы.
to ReviewQueuePage
assert at(ReviewQueuePage)
Приведенный выше код выдаст нулевой указатель, так как объект больше не может быть доступен статическим образом, что означает, что мне пришлось изменить код на
go ReviewQueuePage.url
Это удаляет все функциональные возможности использования класса в качестве страницы.
Есть ли у кого-нибудь решения для инкапсуляции данных для каждой из страниц таким образом, чтобы страницы не работали по-разному.