量角器返回来自转发器的值数组

时间:2014-09-11 19:52:51

标签: angularjs jasmine protractor

我正在寻找一种简单的方法来从量角器的all.(by.repeater)

返回一组值

基本上,我只想要一个简单的方法来制作一个usernames数组,给出一个像user in users这样的转发器。

现在我正在构建它:

allUsers = element.all(by.repeater('user in users').column('user.username')).then(function(array){
  var results = []
  var elemLength = array.length
  for(var n = 0; n < elemLength; n++){
    array[n].getText().then(function(username){
      results.push(username)
    })
  }
  return results
});
expect(allUsers).toContain(newUser)

有没有更简洁,可重复使用的方法来构建我无法找到的量角器/茉莉花?

2 个答案:

答案 0 :(得分:11)

AS alecxe说,使用map来做到这一点。这将返回一个将使用数组中的值解析的延迟,所以如果你有这个:

var mappedVals = element.all(by.repeater('user in users').column('user.username')).map(function (elm) {
    return elm.getText();
});

它会像这样解决:

mappedVals.then(function (textArr) {
    // textArr will be an actual JS array of the text from each node in your repeater
});

答案 1 :(得分:3)

我之前已成功使用map()

element.all(by.repeater('user in users').column('user.username')).map(function (elm) {
    return elm.getText();
});

当我研究这个主题时,我采用了以下解决方案: