如何从量角器中获取ng-repeat的值?

时间:2017-04-30 08:08:25

标签: angularjs selenium testing selenium-webdriver protractor

<div ng-repeat="obj in list">
</div>

此obj有6个属性,如姓名,国家,州,城市,街道和联系人。我已经为此编写了以下代码,但如果我尝试在obj中获取存储的值,它会给我未定义的值。

var elm = element.all(by.repeater('obj in list'));

elm.then(function(obj){
    console.log("Number of Rows : "+ rows.length);
    for(var i=0; i< rows.length; i++){
         console.log("App name : " + rows[i].name);
    }
});

这是打印&#34;应用程序名称:undefined&#34;仅

2 个答案:

答案 0 :(得分:2)

请记住,您正在使用承诺,因此您无法记录未解决的承诺。量角器中的所有执行都是承诺。 其次,您正在使用rows,但您从未定义过它。 rowsobj相同吗?

第三,尝试避免使用Promise的for循环。最好使用例如量角器的each。如果你这样做,你的代码就像这样

var elm = element.all(by.repeater('obj in list'));
elm.each(function(obj, index) {
  // Will print 0 First, 1 Second, 2 Third.
  obj.getText().then(function (text) {
    console.log(index, text);
  });
});

答案 1 :(得分:1)

首先,ng-repeat不包含对象,它包含一个列表。在你的情况下,一个数组。 如果您有嵌套列表(ng-repeat in ng-repeat),请在您的问题中指明。否则,以下代码应该适合您。

let elm = element.all(by.repeater('obj in list'));

elm.getText().then(function(text){
console.log(text);
});