Geb 表单控制快捷方式 - howto

Geb form-control shortcuts - howto

在这里遵循 Geb 指南:book of geb 似乎应该可以轻松访问表单元素,例如文本输入字段等 - 只需使用名称即可。

但是这些例子没有提到一个完整的例子,我似乎无法让它工作。这个结构应该是什么样的?

想象一个具有特定基础的模块 - 它自身的形式 - 以及内容部分中要与之交互的表单元素列表(通过名称指定):

class MyFormModule extends Module {
    static base = { $('form#myForm') }
    static content = {
        mytextfield { textfield.mytextfield }
    }
}

这是受书中"geb"例子的启发。它显然不起作用,因为 "textfield" 不是有效的 属性.

像上面那样做有没有捷径? - 我需要能够在名称中包含点。 (我知道我可以写一个选择器 - 但这是一个关于 "form-control shortcuts" 的问题)...

假设您希望您的内容定义为 return textarea 元素而不是它的值,那么您需要使用方法而不是 属性 并且假设您的元素具有名称中的点您必须引用方法名称,因为方法名称调用包含一个点:

class MyFormModule extends Module {
    static base = { $('form#myForm') }
    static content = {
        mytextfield { "textfield.mytextfield"() }
    }
}

考虑到 Geb 也有用于设置和访问定义为页面和模块内容的元素值的快捷方式(在您链接到的部分末尾描述)和以下页面 class:

class MyPage extends Page {
    static content = {
        myform { module(MyFormModule) }
    }
}

然后您可以执行以下操作:

go MyPage
form.mytextfield = "foo"
assert form.mytextfield == "foo"

其次,您可以使用表单控件快捷方式直接在模块上访问和设置名为 textfield.mytextfield 的元素的值(不使用模块的内容定义):

go MyPage
form."textarea.mytextfield" = "foo"
assert form."textarea.mytextfield" == "foo"