【发布时间】:2020-01-18 11:05:12
【问题描述】:
我的助手类中有以下方法。我需要返回 Number 类型的 rowNum 的方法。但是当我调用该方法时,我总是得到一个 Promise。我想在调用方法时看到数字。
getRowNum(table, colNum, searchText) {
let rowNum = -1;
return table.all(by.css("tbody tr td:nth-child(" + colNum + ")")).map(function (element) {
return element.getText();
}).then(function (textArray) {
for (var i in textArray) {
if (textArray[i].trim().indexOf(searchText) != -1) {
console.log(i);
console.log(textArray[i]);
rowNum = i + 1;
}
}
return rowNum;
});
});
//I'm using it in my other js file like this
let rowNum = helper.getRowNum($("div.sponsor-table table"), 2, "some text");
【问题讨论】:
-
因为你让函数
getRowNum()返回了一个承诺。所以let rowNum=也是承诺。您需要在 'then()' 中获得承诺的最终价值,例如rowNum.then(function(val){ console.log('row num:', val) }) -
糟糕,我的错。我没有意识到。可能是我多年的 Java 经验。
-
@yong,您的代码实际上打印了正确的值,但是如果我将值分配给一个变量,在我的例子中为 rowNum,它会得到一个 Promise 而不是数字。如何正确地将值分配给变量?
-
可以考虑使用
async/awaitprotractortest.org/#/async-await
标签: protractor