fnReturnElements: function(pathElems ){
var strArray= new Array();
selenium.waitForElements(pathElems).then(function(elements) {
for(i=0; i< elements.length;i++){
var a= selenium.getText(elements[i]);
a.then(function(value){
strArray.push(value);
});
}
});
console.log (strArray +" func");
return strArray;
}
对于循环外的 strArray,我在控制台中为空白。和承诺有什么关系?这里的“元素”是 webElements 的列表。
在浏览了有关回调和异步函数的其他帖子后,我进行了以下更改 -
fnReturnElements: function(xpath){
var strArray= new Array();
return selenium.waitForElements(xpath).then(function(elements) {
for(i=0; i< elements.length;i++){
var a= selenium.getText(elements[i]);
a.then(function(value){
i++;
strArray.push(value);
console.log (i + value);
if ( i=== (elements.length*2 )){
return strArray;
}
});
}
});
}
调用函数为 -
fnReturnElements ( xpath).then(function(value) {
console.log (value);
});
但仍然得到 'undefined' 。[a.then(function(value)] 行之前有一个 return,也不会改变输出。任何指针我在这里做错了什么?