Javascript nightwatch自定义命令的执行模型是什么,我如何等待它们?

Javascript nightwatch自定义命令的执行模型是什么,我如何等待它们?,javascript,testing,nightwatch.js,Javascript,Testing,Nightwatch.js,似乎我为Nightwatch.js实现的自定义命令正在异步执行。调用命令后发出的console.log消息后,将显示自定义命令中的console.log消息。我在nightwatch文档中找不到关于如何执行这些命令的任何参考,但由于它们似乎是异步的,我不确定如何等待一个命令完成后再执行下一个命令(因为情况似乎并非如此) 这是我的自定义命令(“foo”): 以及我的测试功能: module.exports['my test'] = function(browser) { browser.r

似乎我为Nightwatch.js实现的自定义命令正在异步执行。调用命令后发出的
console.log
消息后,将显示自定义命令中的
console.log
消息。我在nightwatch文档中找不到关于如何执行这些命令的任何参考,但由于它们似乎是异步的,我不确定如何等待一个命令完成后再执行下一个命令(因为情况似乎并非如此)

这是我的自定义命令(“foo”):

以及我的测试功能:

module.exports['my test'] = function(browser) {
    browser.resizeWindow(400, 600);
    browser.foo();
    console.log('Test function returning');
};
运行此操作时,日志显示为:

Test function returning
Command executed

这与我的自定义函数同步执行时的预期顺序相反。

如果希望自定义命令正常工作(并同步),则需要在自定义命令中至少调用一个Nightwatch.js命令

试试这个:

exports.command = function () {
    console.log('Command executed');
    this.execute(function() {});
}
如果您想了解更深入的详细信息,可以关注以下问题:

您的命令应将
回调
作为参数

exports.command=函数(回调){
log('Command executed');
如果(回调){
回调();
}
}

然后像这样执行

browser.foo(函数(){
log(“测试函数返回”);
});

其他解决方案可以使用
浏览器。执行
方法

module.exports['my test']=函数(浏览器){
浏览器。调整窗口大小(400600);
foo();
browser.perform(函数()
log(“测试函数返回”);
});
};

exports.command = function () {
    console.log('Command executed');
    this.execute(function() {});
}