【问题标题】:Protractor function returning undefined?量角器函数返回未定义?
【发布时间】:2017-02-15 02:18:37
【问题描述】:

这更像是一个 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 protractor


    【解决方案1】:

    欢迎使用 Javascript 进行异步调用!

    您将希望从getSixMonthPremium() 调用返回一个承诺,然后在该调用返回后继续工作。

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

    然后您将通过执行以下操作来处理该承诺:

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

    【讨论】:

    • 谢谢!我知道这是与异步/承诺相关的东西,但我无法通过搜索谷歌找到我需要的东西。我需要给自己买一本 JavaScript 书或找到一些好的在线资料 :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-01
    • 1970-01-01
    • 2019-10-09
    相关资源
    最近更新 更多