跳转到主要内容

Tracing

用于收集和保存 Playwright 追踪(Trace)的 API。Playwright 脚本运行后,可以使用 Trace Viewer 打开追踪文件。

注意

您可能希望在您的配置文件中启用追踪,而不是使用context.tracing

context.tracing API 会捕获浏览器操作和网络活动,但它不会记录测试断言(如 expect 调用)。我们推荐通过 Playwright Test 配置 启用追踪,这会包含这些断言,并提供更完整的追踪以调试测试失败。

在执行操作之前开始记录追踪。最后,停止追踪并将其保存到文件中。

const browser = await chromium.launch();
const context = await browser.newContext();
await context.tracing.start({ screenshots: true, snapshots: true });
const page = await context.newPage();
await page.goto('https://playwright.net.cn');
expect(page.url()).toBe('https://playwright.net.cn');
await context.tracing.stop({ path: 'trace.zip' });

方法

group

新增于: v1.49 tracing.group
注意

如果可用,请改用test.step

在追踪中创建一个新的分组,并将后续的所有 API 调用分配给该分组,直到调用 tracing.groupEnd() 为止。分组可以嵌套,并将显示在追踪查看器中。

用法

// use test.step instead
await test.step('Log in', async () => {
// ...
});

参数

  • name string#

    在追踪查看器中显示的组名。

  • options Object (可选)

返回


groupEnd

新增于: v1.49 tracing.groupEnd

关闭由 tracing.group() 创建的最后一个分组。

用法

await tracing.groupEnd();

返回


start

添加于:v1.12 tracing.start

开始追踪。

注意

您可能希望在您的配置文件中启用追踪,而不是使用Tracing.start

context.tracing API 会捕获浏览器操作和网络活动,但它不会记录测试断言(如 expect 调用)。我们推荐通过 Playwright Test 配置 启用追踪,这会包含这些断言,并提供更完整的追踪以调试测试失败。

用法

await context.tracing.start({ screenshots: true, snapshots: true });
const page = await context.newPage();
await page.goto('https://playwright.net.cn');
expect(page.url()).toBe('https://playwright.net.cn');
await context.tracing.stop({ path: 'trace.zip' });

参数

  • options Object (可选)
    • live boolean (可选)新增于: v1.59#

      启用后,追踪信息将写入一个未压缩的文件中,该文件会随操作实时更新,而不是在最后将更改缓存并归档为 zip 文件。这对于在测试执行期间进行实时追踪查看非常有用。

    • name string (可选)#

      如果指定,中间追踪文件将保存为 tracesDir 目录内具有给定名称前缀的文件,该目录由 browserType.launch() 指定。要指定最终的追踪 zip 文件名,您需要改为将 path 选项传递给 tracing.stop()

    • screenshots boolean (可选)#

      是否在追踪期间捕获屏幕截图。屏幕截图用于构建时间线预览。

    • snapshots boolean (可选)#

      如果此选项为 true,追踪将

      • 在每次操作时捕获 DOM 快照
      • 记录网络活动
    • sources boolean (可选)新增于: v1.17#

      是否包含追踪操作的源文件。

    • title string (可选)新增于: v1.17#

      在追踪查看器中显示的追踪名称。

返回


startChunk

新增于: v1.15 tracing.startChunk

开始一个新的追踪分片(Chunk)。如果您希望在同一个 BrowserContext 上记录多个追踪,请调用一次 tracing.start(),然后通过 tracing.startChunk()tracing.stopChunk() 创建多个追踪分片。

用法

await context.tracing.start({ screenshots: true, snapshots: true });
const page = await context.newPage();
await page.goto('https://playwright.net.cn');

await context.tracing.startChunk();
await page.getByText('Get Started').click();
// Everything between startChunk and stopChunk will be recorded in the trace.
await context.tracing.stopChunk({ path: 'trace1.zip' });

await context.tracing.startChunk();
await page.goto('http://example.com');
// Save a second trace file with different actions.
await context.tracing.stopChunk({ path: 'trace2.zip' });

参数

  • options Object (可选)
    • name 字符串 (可选)新增于: v1.32#

      如果指定,中间追踪文件将保存为 tracesDir 目录内具有给定名称前缀的文件,该目录由 browserType.launch() 指定。要指定最终的追踪 zip 文件名,您需要改为将 path 选项传递给 tracing.stopChunk()

    • title string (可选)新增于: v1.17#

      在追踪查看器中显示的追踪名称。

返回


stop

添加于:v1.12 tracing.stop

停止追踪。

用法

await tracing.stop();
await tracing.stop(options);

参数

  • options Object (可选)
    • path string (可选)#

      将追踪导出到给定路径的文件中。

返回


stopChunk

新增于: v1.15 tracing.stopChunk

停止追踪分片。关于多个追踪分片的更多详细信息,请参阅 tracing.startChunk()

用法

await tracing.stopChunk();
await tracing.stopChunk(options);

参数

返回