如何从异步js函数返回结果

时间:2016-02-11 03:19:23

标签: javascript selenium nightwatch.js

我正在用selenium编写一个简单的夜间测试,测试成功登录和登录失败。我的测试工作正常,但结果并没有恢复我的预期。以下是我的测试。

module.exports = {

    'Login Success': function(browser){
        var data = browser.globals;
        browser
            .url(data.launch_url)
            .login(data.token,function(result){
                console.log("The login is successful",result.value);
            })
            .verify.elementNotPresent('.errorfield')
            .verify.elementPresent('#header')
            .end();
    }
};

和我的自定义命令登录

exports.command = function(token, callback){
    const element = this.globals.login_element;
    callback = callback || function(){};

    this
        .waitForElementPresent(element.tokenInput, 5000)
        .verify.elementPresent(element.tokenInput)
        .setValue(element.tokenInput, token)
        .click(element.signinButton)
        .pause(1000)
        .execute(function(token) {
            return !!(document.getElementById(element.tokenInput));
        },[token],function(result){
            callback.call(this,result);
        });

    return this;
};

我的测试工作正常。但是,我期待

console.log("The login is successful",result.value);

打印一个布尔值,即true或false。然而,结果返回了一些根本没有意义的长硒物体。请问我哪里出错了?来自

.execute(function(token) {
                return !!(document.getElementById(element.tokenInput));
            }

我希望有一个布尔结果返回到我的控制台,结果肯定应该。任何帮助将不胜感激。

0 个答案:

没有答案