【问题标题】: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,但您从未定义它。 rows和obj一样吗?
第三,尽量避免带有 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);
});