2016-04-05 101 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