使用GEB和Cucumber在页面中封装逻辑

Del*_*nja 3 bdd groovy cucumber geb

使用GEB我使用页面对象模式静态封装有关不同页面的信息.

然后,我重构了我的GEB代码,以便从一个单独的类中使用,因此我可以使用方法调用封装常用命令.

例如,我将有一个方法login(),它将调用相应的GEB代码登录我正在测试的网站.然后我会在TestHelper类上使用方法调用来使用其他常用函数.

我想将这些常用功能移动到他们所采用的页面上.例如,搜索页面将具有搜索方法,登录页面将具有登录方法.通过这种方式,我可以构建一个页面库,其中包含所有常用功能,以便在多个GEB项目中使用.现在要做到这一点,每个页面必须在geb.Browser上有一个句柄,因此我现在必须在测试设置中实例化每个页面.通过这样做,我不再能够使用标准页面对象模式.

to ReviewQueuePage
assert at(ReviewQueuePage)
Run Code Online (Sandbox Code Playgroud)

上面的代码将抛出一个空指针,因为对象不再能够以静态方式访问,这意味着我必须将代码更改为

go ReviewQueuePage.url
Run Code Online (Sandbox Code Playgroud)

这将删除将该类用作页面的所有功能.

有没有人有任何解决方案来封装每个页面的数据,因为它不会导致页面采取不同的行为.