菜单
开源

addInitScript()

添加一个脚本,该脚本将在以下场景之一中执行

  • 在浏览器上下文中的任何页面创建或导航时。
  • 在浏览器上下文中的任何页面中,子frame附加或导航时。在这种情况下,脚本将在新附加的frame上下文中执行。

脚本在文档创建后但在其任何脚本运行之前执行。这对于修改 JavaScript 环境很有用,例如覆盖 Math.random

返回值

类型描述
Promise<void>一个 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 () {
  const browserContext = await browser.newContext();

  // This will execute and override the existing implementation of Math.random.
  await browserContext.addInitScript('Math.random = function(){return 0}');

  const page = await browserContext.newPage();

  // In this example we are going to set the content manually, so we first
  // navigate to about:blank which will execute the init script, before setting
  // the content on the page.
  await page.goto('about:blank');

  await page.setContent(`
  <html>
    <head></head>
    <body>
      <div id="random">waiting...</div>
    </body>
    <script>
        document.getElementById('random').textContent = Math.random();
    </script>
  </html>`);

  await check(page.locator('#random'), {
    'is zero': async random => await random.textContent() == '0'
  });

  await page.close();
}