使用 GEB 我使用页面对象模式来静态封装有关不同页面的信息。
然后我重构了我的 GEB 代码,以便从一个单独的类中使用,这样我就可以使用方法调用来封装常用命令。
例如,我将有一个方法 login() 将调用适当的 GEB 代码来登录到我正在测试的网站。然后,我将使用 TestHelper 类上的方法调用来获得其他常用功能。
我想将这些常用功能移至它们所作用的页面。例如,搜索页面将具有搜索方法,登录页面将具有登录方法。通过这种方式,我可以构建一个包含所有通用功能的页面库,以便在多个 GEB 项目中使用。现在要做到这一点,每个页面都必须在 geb.Browser 上有一个句柄,因此我现在必须在测试设置中实例化每个页面。通过这样做,我不再能够使用标准页面对象模式。
to ReviewQueuePage
assert at(ReviewQueuePage)
上面的代码将抛出一个空指针,因为对象不再能够以静态方式访问,这意味着我必须将代码更改为
go ReviewQueuePage.url
这删除了将类用作页面的所有功能。
有没有人有任何解决方案来封装每个页面的数据,而不会导致页面行为不同。