在执行任何其他命令或断言之前,等待给定时间(默认 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。要在全局范围内设置此选项,可以在 globals 中定义一个名为 `abortOnAssertionFailure` 的属性。