我是 Geb 的新手。我试图获取 html 元素的文本。element.text()
有时返回正确的值,有时为空。element.@text
返回期望值。
有人可以解释这种行为吗?
text() 用于标签正文,@text 返回文本属性的值
element.@text
直接访问文本属性,而text()
调用函数来访问文本,可能会做一些除了获取属性之外的事情。
编辑
根据文档,该text()
方法返回first
上下文元素的文本内容,这可能是它有时不返回您期望的值的原因(例如,如果您正在寻找第二个上下文元素的文本内容)。
编辑 2
对于 NonEmptyNavigator,text() 方法的实现如下所示:
@Override
String text() {
firstElement().text
}
对于 EmptyNavigator,返回 null
@Override
String text() { null }
编辑 3
由于两个 Navigator 实现都没有 text 属性,因此propertyMissing()
调用该方法。