0
假設我有一個用兩個步驟填寫表單的Nightwatch測試。作爲第一步的一部分,我需要動態查詢頁面中的一些數據(使用Selenium API),然後使用這些數據進行額外的硒調用,並使用最終結果來進行自定義斷言。我需要使用Selenium api的原因不是我不知道如何使用正常的Nightwatch斷言,而是正常的斷言不足以測試我想測試的事物的類型。此外,在第一步結束時單擊一個按鈕,移到表單的下一部分(準備第二步)。Nightwatch.js異步硒操作
(代碼版本):
module.exports = {
'Part 1': (client) => {
// ... do cool stuff
client.SOME_SELENIUM_COMMAND(...SOME_ARGS..., (result) => {
client.SOME_OTHER_SELENIUM_COMMAND(...SOME_OTHER_ARGS..., (result2) => {
// ... do more cool stuff with result2
});
});
// moves the page onto part 2
client.click(SOME_BUTTON);
},
'Part 2': (client) => {
// ... part 2 stuff
}
};
我的問題是這樣的:測試的硒命令結果部分結算前移動到第二部分。
我知道內部Nightwatch使用某種事件隊列和EventEmitters來確保命令按正確的順序執行,但看起來第一部分末尾的click命令正在排隊回調可以。
感謝您的回答!究竟是.perform命令應該用於什麼? (該文檔看起來不太具有描述性) – dwoodwardgb
我會說,它基本上用於當你想要做一些API默認不支持或者你想執行異步操作的時候。 'Perform'可以用來運行任何javascript,或者調用API,因爲這個函數的第一個參數是瀏覽器對象。整潔的事情是,您可以控制要運行的操作,然後在您想要繼續執行下一步時調用'done()'函數。這是否解決了你的問題? –
是的。目前我有很多抽象(使用承諾和頁面對象)。這將需要一些時間來弄清楚如何使用這種調用API的新方法... – dwoodwardgb