量角器从ElementArrayFinder中检索单个元素

时间:2016-09-12 10:40:39

标签: angularjs protractor angularjs-e2e

我想从匹配条件的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));

3 个答案:

答案 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。我没有测试代码,但它应该可以工作