菜单
文档面包屑箭头 Grafana k6面包屑箭头 JavaScript API面包屑箭头 k6/browser面包屑箭头 Page面包屑箭头 waitForNavigation([options])
开源

waitForNavigation([options])

等待指定的导航生命周期事件发生,并返回主资源响应。

参数类型默认值描述
optionsobjectnull
options.timeoutnumber30000最大时间(毫秒)。传递 0 可禁用超时。默认值会被 BrowserContextPage 上的 setDefaultTimeout 选项覆盖。
options.waitUntilstringload何时认为操作已成功。有关更多详细信息,请参阅 事件

活动

注意

不建议使用 networkidle。特别是对于网络流量频繁的网站,事件可能永远不会触发,请勿将此方法用于测试,而应依赖于 Web 断言来评估准备状态。

事件可以是

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

返回值

类型描述
Promise<null | Response>与页面关联的 Response 实例。否则,返回 null

示例

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 () {
  const 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 Promise.all([
      submitButton.click(),
      page.waitForNavigation(),
    ]);

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