2

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

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

4

2 回答 2

1

text() 用于标签正文,@text 返回文本属性的值

于 2013-11-12T14:28:36.870 回答
0

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

编辑

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

编辑 2

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

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

对于 EmptyNavigator,返回 null

@Override
String text() { null }

编辑 3

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

有关实现细节,请参见此处此处

于 2013-11-12T09:25:05.383 回答