量角器和归约.all元素列表

时间:2018-06-25 15:29:52

标签: filter protractor reduce

我完全不知道为什么使用.all.filter列表中进行搜索为我提供了一个可以与.click链接的ElementFinder

function findElem(name) {
    return elemList.filter(function(elem, idx) {
        return elem.element(by.css('some css here').getText().then(function(text) {
           return text === name;
        });
    }).first();
}

但是当起诉类似但使用reduce时却是这样:

function findElem(name, findPosition) {
    return elemList.reduce(function(total, current, idx) {
        return current.element(by.css('some css here').getText().then(function(text) {
            if (text ==== name) {
               return findPosition === undefined ? current : idx;
            } else {
               return total;
            }
        });
    });
} 

即使我使用相同的ElementFinder(至少在console.log中),我也无法将其与.click一起使用,并且出现pageObject.findElem('name of element to find').click is not a function的错误

2 个答案:

答案 0 :(得分:0)

尝试这个:

function findElem(name, findPosition) {
  return elemList.reduce((total, current, idx) => {
    return current.$('some css here').getText()
      .then((text) => {
        if (text === name) {
          return findPosition === undefined ? current : idx;
        } else {
          return total;
        }
      });
  });
}

出现error pageObject.findElem('name of element to find').click is not a function的原因是返回值不是ElementFinder

答案 1 :(得分:0)

感谢Oleksii的出色添加,但此功能运行良好:-) 我只是在稍后阶段错误地使用了它。