在Geb中,如何将输入列表分配给HTML输入实体列表

时间:2013-01-11 06:34:43

标签: groovy spock geb

我有一个问题,我有一个CSS选择器,它返回一个输入对象列表(所有文本输入),我想轻松地为它们设置值。

我希望能够做到这样的事情:(假设addressTextFields只是html文本输入的集合)

//目前这将每个字段分配为字符串“[”New“,”Belgium“,”.........

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 }

有关如何为文本字段指定值的任何想法?

1 个答案:

答案 0 :(得分:3)

使用=和&lt;&lt;输入字段列表上的运算符,而不是单个输入字段 您正尝试将addressTextFields列表设置为[“New”,“Belgium”,...]或将[“New”,“Belgium”,...]的不同元素添加到addressTextFields列表中。

您实际想要做的是将每个元素作为值分配给文本字段:

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", … ])