在执行任何其他命令或断言之前,等待指定时间(默认 5000 毫秒)以使页面上的元素可见。

如果在指定时间内元素未找到或不可见,则测试将被标记为失败,通常,测试用例/部分中的后续步骤/命令将不会执行。 但是,您可以通过将abortOnFailure 设置为false 来阻止跳过剩余的步骤/命令。

您可以通过在 nightwatch.json 或外部全局文件中的全局属性中定义一个 waitForConditionPollInterval 属性(以毫秒为单位)来更改轮询间隔。

类似地,可以将默认超时指定为全局 waitForConditionTimeout 属性(以毫秒为单位)。

有关在 Nightwatch 中使用 DOM 元素的更多信息,请参阅查找和交互 DOM 元素 指南页面。

用法

                    .waitForElementVisible([using], selector, [timeout], [pollInterval], [abortOnAssertionFailure], [callback], [message]);
                

示例

module.exports = {
 'demo Test': function(browser) {
    // with default implicit timeout of 5000ms (can be overwritten in settings under 'globals.waitForConditionTimeout')
    browser.waitForElementVisible('#index-container');

    // specify the locate strategy (css selector/xpath) as the first argument
    browser.waitForElementVisible('css selector', '#index-container');

    // with explicit timeout (in milliseconds)
    browser.waitForElementVisible('#index-container', 1000);

    // continue if failed
    browser.waitForElementVisible('#index-container', 1000, false);

    // with callback
    browser.waitForElementVisible('#index-container', 1000, function() {
      // do something while we're here
    });

    // with custom output message - the locate strategy is required
    browser.waitForElementVisible('css selector', '#index-container', 'The index container is found.');

    // with custom Spanish message
    browser.waitForElementVisible('#index-container', 1000, 'elemento %s no era presente en %d ms');

    // many combinations possible - the message is always the last argument
    browser.waitForElementVisible('#index-container', 1000, false, function() {}, 'elemento %s no era visible en %d ms');
  },

  'demo Test with selector objects': function(browser) {
     browser.waitForElementVisible({
       selector: '#index-container',
       timeout: 1000
     });

     browser.waitForElementVisible({
       selector: '#index-container',
       locateStrategy: 'css selector'
     }, 'Custom output message');

     browser.waitForElementVisible({
       selector: '.container',
       index: 2,
       retryInterval: 100,
       abortOnFailure: true
     });
  }

  'page object demo Test': function (browser) {
     var nightwatch = browser.page.nightwatch();
     nightwatch
       .navigate()
       .assert.titleContains('Nightwatch.js');

     nightwatch.waitForElementVisible('@featuresList', function(result) {
       console.log(result);
     });
  }
}

参数

名称 类型 描述
使用
可选
字符串

要使用的定位策略。查看W3C Webdriver - 定位策略

选择器 字符串 | 对象

用于定位元素的选择器(CSS/Xpath)。可以是字符串,也可以是指定元素属性 的对象。

time=waitForConditionTimeout
可选
数字

在失败之前等待的总毫秒数。

poll=waitForConditionPollInterval
可选
数字

两次检查之间等待的毫秒数。只有在您也指定了 time 参数时才能使用它。

abortOnFailure=abortOnAssertionFailure
可选
布尔值

默认情况下,如果未找到元素,则测试将失败。如果希望即使断言失败测试也继续执行,请将其设置为 false。要全局设置此选项,您可以在全局文件中定义一个 abortOnAssertionFailure 属性。

回调
可选
函数

命令完成后要调用的可选回调函数。

消息
可选
字符串

要显示在输出中的可选消息;该消息支持两个占位符:%s 用于当前选择器,%d 用于时间(例如,元素 %s 未在页面中 %d 毫秒)。