2016-08-02 42 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'); }); };

相關問題