2013-01-11 57 views
1

我有一個問題,我有一個CSS選擇器,返回輸入對象列表(所有文本輸入),我想輕鬆設置值給他們。在Geb中,如何將輸入列表分配給HTML輸入實體列表

我希望能夠做這樣的事情:(假設addressTextFields是僅有的HTML文本輸入的集合)

//目前該領域的每一個指定的字符串「[」新」, 「比利時」,「.........

addressTextFields = ["New", "Belgium", "500 Linden Street", "Suite 200", "Fort Collins", "98026", "970-111-2222"]

//編譯失敗,因爲ArrayList和WebElement之間的轉換是不可能的......不過,我喜歡的語法:-)

addressTextFields << ["New", "Belgium", "500 Linden Street", "Suite 200", "Fort Collins", "98026", "970-111-2222"].each { it -> it }

有關如何爲文本字段賦值的任何想法?

回答

3

通過使用=和< <操作員輸入的字段列表上,而不是單個輸入字段 你試圖addressTextFields的列表中設置爲[「新」,「比利時」,...]或加入[「New」,「Belgium」,...]的不同元素添加到addressTextFields列表中。

你真正想要做的是給每個elemnt指定爲一個值的文本字段:

def values = ["New", "belgium", … ] 
addressTextFields.eachWithIndex { input, i -> input = values[i] } 

如果你用的模塊或頁面工作,你可以輕鬆地創建的模塊或頁面級的方法是將字符串列表作爲輸入並將每個值分配給相應的文本輸入字段。

// Module or page method 
def setTextFieldValues(List values) { 
    addressTextFields.eachWithIndex { input, i -> input = values[i] } 
} 

// From within test 
setTextFieldValues(["New", "Belgium", … ]) 
+0

謝謝@Ruben! – mensor

+0

爲了記錄,我最終需要使用左移(<<)來填充閉包內的值。我接近的語法,但我仍然是相當新的Groovy :) '//模塊或頁面方法 def setTextFieldValues(List values){ addressTextFields.eachWithIndex {input,i - > input << values [ } //從測試 setTextFieldValues([「New」,「Belgium」,...]) ' – mensor