如何在GEB中找到包含特定字符串的行,在该特定行中我需要选择一个链接/复选框

时间:2014-04-29 22:45:29

标签: jquery groovy gradle geb

有没有办法在GEB中找到包含特定字符串的行号/索引?我可以通过以下方式检查行是否包含特定字符串:

text: contains()

但是如何找到该行的索引,然后使用该索引ID单击同一行中的链接?任何建议或帮助将非常感激。请不要说我到目前为止尝试了什么。我已经花了几个小时但仍然没办法!

编辑:好的,问题是:我可以选择任何已知索引的行,例如:

$('p', 1).click() 

但是当我不知道行的索引并且在该特定行中我需要选择一个链接/复选框时,我相信这是我们想要处理问题的方式,不是吗?或者还有其他更好的方法吗?

2 个答案:

答案 0 :(得分:2)

必须你能找到按行索引的链接吗?如果它在同一行,为什么不按照您的建议使用contains找到该行,然后访问其父级,然后重新登录以查找该链接?

e.g。 $('p', contains('some text')).parent().find( 链接 ).click();

如果这不起作用,你能解释为什么你需要在这样的庄园中访问它吗?

答案 1 :(得分:2)

在Geb中处理重复内容(表格/搜索结果/等...)的最佳方法是使用模块。 Example from the Book of Geb

class CartRow extends Module {
    static content = {
        cell { $("td", it) }
        productName { cell(0).text() }
        quantity { cell(1).text().toInteger() }
        price { cell(2).text().toDouble() }
    }
}

在我们的页面中定义一个CartRows列表:

class CheckoutPage extends Page {
    static content = {
        cartItems { moduleList CartRow, $("table tr").tail() } // tailing to skip the header row
    }
}

因为cartItems的返回值是CartRow实例的列表,所以我们可以使用任何常用的收集方法:

assert cartItems.every { it.price > 0.0 }

我在Geb Examples project on GitHub ...

中也有一个有效的例子