【问题标题】:How to get values from ng-repeat in protractor?如何从量角器中的 ng-repeat 获取值?
【发布时间】:2017-09-27 23:51:37
【问题描述】:
<div ng-repeat="obj in list">
</div>

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

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);
    }
});

这只是打印“应用名称:未定义”。

【问题讨论】:

    标签: angularjs selenium testing selenium-webdriver protractor


    【解决方案1】:

    请记住,您正在使用 Promise,因此您无法记录未解决的 Promise。 Protractor 中的所有执行都是承诺。 其次,您使用的是rows,但您从未定义它。 rowsobj一样吗?

    第三,尽量避免带有 Promises 的 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);
      });
    });
    

    【讨论】:

      【解决方案2】:

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

      let elm = element.all(by.repeater('obj in list'));
      
      elm.getText().then(function(text){
      console.log(text);
      });
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-08-13
        • 1970-01-01
        • 1970-01-01
        • 2018-08-02
        相关资源
        最近更新 更多