2016-04-05 134 views
0

遵循Geb指南这里的书:book of geb它似乎应该可以轻松访问表单元素,如文本输入字段等 - 只是使用名称。Geb形式控制快捷方式 - howto

然而,这些例子没有提到一个完整的例子,我似乎无法得到它的工作。这个构想如何构想?

想象具有特定碱基的模块 - 的形式,它自 - 和列表形式元素的以与所述内容部分交互(通过名称指定):

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

这是由“GEB的启发“这本书中的例子。这显然不起作用,因为“textfield”不是一个有效的属性。

有没有像上面的dooing快捷方式? - 我需要能够在名称中加点。 (我知道我可以写一个选择器 - 但这是一个关于“窗体控制快捷方式”的问题)...

回答

1

假设您希望您的内容定义返回textarea元素而不是它的值,那么您需要使用的方法,而不是一个属性,因为你的元素都有其名称中的点,你要引用的方法名称,因为方法名调用包含点:

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

鉴于盖布也有设置和访问快捷方式定义为页面和模块内容的元素值(描述在您链接的部分末尾)和以下页面类别:

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

然后,您可以执行以下操作:直接在模块上命名为textfield.mytextfield(不使用模块的内容定义)使用的形式控制快捷键的元素

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

其次,你可以访问和设定值:

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

听起来和我预期的完全一样 - 我会试试看,如果它能正常工作,可以拿回一些投票:)感谢你的回复! – Hoof