我想从匹配条件的ElementArrayFinder中检索第一个元素。下面的代码为我提供了我期待的元素,但它遍历了所有需要时间的元素。
有什么办法吗?
return content.all(by.css('.class')).filter(function(label){
return label.getText().then(function(text){
return text === searchName;
});
}).first();
结论: Sudharsan Selvaraj提供的答案充当魅力
var ele = content.all(by.xpath(".//*[contains(@class,'class')][normalize-space(text())='some-value']")).first()
大幅缩短搜索元素的时间
Florent B.提供的答案也解决了问题,看起来更简单。
return content.element(by.cssContainingText('.class', searchName));
答案 0 :(得分:1)
您可以使用xpath查找具有特定文本的元素。查看下面的示例xpath。
var ele = content.all(by.xpath(".//*[contains(@class,'class')][normalize-space(text())='some-value']")).first()
答案 1 :(得分:0)
您应该使用定位器by.cssContainingText
通过CSS和文本查找元素:
return content.element(by.cssContainingText('.class', searchName));
答案 2 :(得分:-1)
为什么不直接访问标签的第一个元素?
return content.all(by.css('.class label')).first().getText().then(function (text) {
return text === searchName;
});
P.S。我没有测试代码,但它应该可以工作