2016-08-02 18 views
2

看来我为Nightwatch.js实现的自定义命令正在异步执行。自定义命令中的console.log消息在之后出现,该命令被调用后发出。我在夜间文档中找不到有关如何执行这些命令的任何参考,但由于它们看起来是异步的,我不确定在执行下一个命令之前如何确保一个命令已完成(因为这似乎并非如此)。什么是夜间自定义命令的执行模式,以及如何等待它们?

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

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

而我的测试功能:

module.exports['my test'] = function(browser) { 
    browser.resizeWindow(400, 600); 
    browser.foo(); 
    console.log('Test function returning'); 
}; 

当我运行此,日志显示为:

Test function returning 
Command executed 

如果我的自定义函数正在同步执行,这与我期望的顺序相反。

回答

2

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

试试这个:

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

如果您想更深入的细节,你可以按照这个问题: https://github.com/nightwatchjs/nightwatch/issues/1123

0

你的命令应该采取callback作为参数

exports.command = function (callback) { console.log('Command executed'); if (callback) { callback(); } }

并执行此操作

browser.foo(function() { console.log('Test function returning'); });

其它溶液可以使用browser.perform方法

module.exports['my test'] = function(browser) { browser.resizeWindow(400, 600); browser.foo(); browser.perform(function() console.log('Test function returning'); }); };

相关问题