如何在页面中声明模块以在GEB中使用IDE自动补全?

How to declare Module in Page to use IDE autocompletion In GEB?

根据http://www.gebish.org/manual/current/modules.html#modules 模块应该这样定义:

class ExamplePage extends Page {
    static content = {
        theModule { module ExampleModule }
    }
}

来自 Geb 的文档:

16.2.2 Strong typing

In order to gain improved authoring support, you must include types in your tests and page objects. Additionally, you must explicitly access the browser and page objects instead of relying on dynamic dispatch.

所以:

HomePage homePage = browser.to HomePage
homePage.loginButton.click()

它在 Pages 上工作得很好,但我能找到将它与 Modules 一起使用的方法吗? 在这里自动完成:

HomePage homePage = browser.to HomePage
homePage.loginFormModule. *autosuggestion here*

(其中 "loginFormModule" - 是主页的模块)

模块定义的强类型化最近已添加到 master 中,但尚未发布。基本上 module() 方法的位置已经改变,所以现在 IntelliJ 可以理解它的 return 类型。如果您想尝试一下,可以使用 Geb's snapshot repo. The way you pass a base navigator and parameters to a module has changed, see the latest chapter on modules for info 中的 0.10.1-SNAPSHOT。如果你能试一试并告诉我是否通过简单地更改版本你可以获得自动完成,那就太棒了。