.waitUntil() 建議編輯
等待給定的時間(毫秒,預設為 5000 毫秒),直到元素處於提供的動作狀態,然後再執行任何其他命令或斷言。
如果元素在給定的時間內未能處於動作狀態,則測試失敗。 您可以將 abortOnFailure
設定為 false
來變更此行為。
您可以在 nightwatch.conf.js
或外部全域檔案中將輪詢間隔定義為全域屬性 waitForConditionPollInterval
(以毫秒為單位)來變更輪詢間隔。
同樣地,預設逾時可以指定為全域屬性 waitForConditionTimeout
(以毫秒為單位)。
用法
.waitUntil(action, {timeout, retryInterval, message, abortOnFailure});
範例
describe('demo Test', function() {
it ('wait for container', async function(browser){
// with default implicit timeout of 5000ms (can be overwritten in settings under 'globals.waitForConditionTimeout')
await browser.element.find('#index-container').waitUntil('visible');
// with explicit timeout (in milliseconds)
await browser.element.find('#index-container').waitUntil('visible', {timeout: 1000});
// continue if failed
await browser.element.find('#index-container').waitUntil('visible', {timeout: 1000, abortOnFailure: false});
// with negative assertion
await browser.element.find('#index-container').waitUntil('not.visible');
// with xpath as the locate strategy
await browser.element.find(by.xpath('//*[@id="index-container"]')).waitUntil('visible', {message: 'The index container is found.'});
// with custom message
await browser.element.find('#index-container').waitUntil('visible', {message: 'The index container is found.'});
});
it('page object demo Test', async function (browser) {
const nightwatchPage = browser.page.nightwatch();
nightwatchPage
.navigate()
.assert.titleContains('Nightwatch.js');
await nightwatchPage.element.find('@featuresList').waitUntil('visible');
});
});
參數
名稱 | 類型 | 描述 |
---|---|---|
action |
字串 | 動作狀態。 應為以下其中之一:selected、not.selected、visible、not.visible、enabled、disabled、present、not.present |
timeout 可選 |
數字 | 在失敗之前要等待的總毫秒數。 也可以使用設定下的「globals.waitForConditionTimeout」設定。 |
retryInterval 可選 |
數字 | 重試之間等待的毫秒數。 只有在您同時指定時間參數時,才能使用此參數。 也可以使用設定下的「globals.waitForConditionPollInterval」設定。 |
message 可選 |
字串 | 在輸出中顯示的可選訊息。 訊息支援兩個佔位符:%s 表示目前選擇器,%d 表示時間(例如,元素 %s 在頁面中未出現 %d 毫秒)。 |
abortOnFailure=abortOnAssertionFailure 可選 |
布林值 | 預設情況下,如果找不到元素,測試將會失敗。 如果您希望即使斷言失敗,測試仍能繼續,請將此設定為 false。 若要全域設定此項,您可以在全域變數中定義屬性 |