菜单
文档breadcrumb arrow Grafana k6breadcrumb arrow JavaScript APIbreadcrumb arrow k6/browserbreadcrumb arrow Pagebreadcrumb arrow waitForLoadState(state[, options])
开源

waitForLoadState(state[, options])

注意

此方法存在已知问题。有关详细信息,请参阅 #880

此方法等待达到给定的加载状态。如果该生命周期事件已收到,它将立即解除阻塞。

参数类型默认值描述
statestringload可选的加载状态,等待其达到。有关详细信息,请参阅事件
optionsobjectnull
options.timeoutnumber30000最大时间(毫秒)。传递 0 可禁用超时。默认值将被 BrowserContextPage 上的 setDefaultTimeout 选项覆盖。

活动

注意

不推荐使用 networkidle。不要使用此方法进行测试,特别是对于那些事件可能永远不会触发的“话痨”网站,请改为依赖 web 断言来评估就绪状态。

事件可以是以下之一:

  • 'domcontentloaded' - 当 DOMContentLoaded 事件触发时,认为操作完成。
  • 'load' - 当 load 事件触发时,认为操作完成。
  • 'networkidle' - 当至少 500 毫秒内没有网络连接时,认为操作完成。

返回值

类型描述
Promise<void>一个在达到加载状态时 fulfilled 的 Promise。

示例

JavaScript
import { browser } from 'k6/browser';
import { check } from 'https://jslib.k6.io/k6-utils/1.5.0/index.js';

export const options = {
  scenarios: {
    browser: {
      executor: 'shared-iterations',
      options: {
        browser: {
          type: 'chromium',
        },
      },
    },
  },
};

export default async function () {
  let page = await browser.newPage();

  try {
    await page.goto('https://test.k6.io/my_messages.php');

    await page.locator('input[name="login"]').type('admin');
    await page.locator('input[name="password"]').type('123');

    const submitButton = page.locator('input[type="submit"]');
    await submitButton.click();

    await page.waitForLoadState('networkidle'); // waits until the `networkidle` event

    await check(page.locator('h2'), {
      'header': async h2 => await h2.textContent() == 'Welcome, admin!'
    });
  } finally {
    await page.close();
  }
}