遵循本书的Geb指南:book of geb似乎应该可以轻松访问表单元素,例如文本输入字段等 - 只需使用名称。
但是这些例子没有提到一个完整的例子,我似乎无法让它发挥作用。这个构造假设是什么样的?
想象一个具有特定基础的模块 - 它自己的形式 - 以及在内容部分中交互的表单元素列表(通过名称指定):
class MyFormModule extends Module {
static base = { $('form#myForm') }
static content = {
mytextfield { textfield.mytextfield }
}
}
这是受书中“geb”例子的启发。它显然不起作用,因为“textfield”不是有效的属性。
上面的dooing有没有快捷方式? - 我需要能够在名字中加点。 (我知道我可以写一个选择器 - 但这是一个关于“表单控制快捷方式”的问题)...
答案 0 :(得分:1)
假设您希望内容定义返回textarea
元素而不是它的值,那么您需要使用方法而不是属性,并且假设您的元素在其名称中有一个点必须引用方法名称,因为方法名称调用包含一个点:
class MyFormModule extends Module {
static base = { $('form#myForm') }
static content = {
mytextfield { "textfield.mytextfield"() }
}
}
鉴于Geb还有用于设置和访问定义为页面和模块内容的元素值的快捷方式(在您链接的部分的末尾描述)和以下页面类:
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"