gpt4 book ai didi

javascript - Protractor 函数返回未定义?

转载 作者:行者123 更新时间:2023-12-01 04:00:29 25 4
gpt4 key购买 nike

这更多的是一个 JavaScript 问题,但它是尝试使用 Protractor 测试来实现的。

//fileA.js
element(by.id('page-element').getText().then(function() {
var currentPremium = fileB.getSixMonthPremium(); // calls the function in fileB.js

element(by.id('page-element').getText().then(function() {
console.log(currentPremium); // prints undefined
fileB.compareValue(currentPremium, ..., ...,);
});
});


//fileB.js
this.getSixMonthPremium() = function() {
element(by.id('full-premium').isDisplayed().then(function(displayed) {
if (displayed) {
element(by.id('full-premium').getText().then(function(currentPremium) {
console.log('Current Premium - ' + currentPremium); // prints string of $XXX.xx
return currentPremium; //seems to be returning undefined?
});
}
});
});

当变量currentPremium从函数调用返回后尝试使用它时,它总是未定义的。我究竟做错了什么?

最佳答案

欢迎使用 Javascript 异步调用!

您需要从 getSixMonthPremium() 调用返回一个 Promise,然后在该调用返回后继续工作。

this.getSixMonthPremium() = function() {
return new Promise(function(resolve,reject){
element(by.id('full-premium').isDisplayed().then(function(displayed) {
if (displayed) {
element(by.id('full-premium').getText().then(function(currentPremium) {
console.log('Current Premium - ' + currentPremium); // prints string of $XXX.xx
resolve(currentPremium); //seems to be returning undefined?
});
}
});
})
});

然后你将通过执行以下操作来处理该 promise :

fileB.getSixMonthPremium().then(function(premium){
...handle premium
});

关于javascript - Protractor 函数返回未定义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42233183/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com