为什么element.text()!= element。@ text?

时间:2013-11-12 09:21:10

标签: testing groovy geb

我是Geb的新手。我试图获取html元素的文本。 element.text()有时会返回正确的值,有时会返回空值。 element.@text返回预期值。

有人可以解释这种行为吗?

2 个答案:

答案 0 :(得分:1)

text()用于标记主体,@ text返回文本属性的值

答案 1 :(得分:0)

element.@text直接访问text属性,而text()调用一个函数来访问文本,可能除了获取属性之外还要做一些事情。

修改

根据documentationtext()方法返回first上下文元素的文本内容,这可能是它有时无法返回您期望的值的原因(例如,如果您正在寻找第二个上下文元素的文本内容)。

编辑2

对于NonEmptyNavigator,text()方法的实现如下:

@Override
String text() {
        firstElement().text
}

对于EmptyNavigator,返回null

@Override
String text() { null }

编辑3

由于两个Navigator实现都没有text属性,因此调用propertyMissing()方法。

有关实施细节,请参阅herehere