跳到主要内容

Tracing

用于收集和保存 Playwright 追踪信息的 API。Playwright 脚本运行完毕后,可在 追踪查看器 中打开 Playwright 追踪信息。

备注

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

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

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

using var playwright = await Playwright.CreateAsync();
var browser = await playwright.Chromium.LaunchAsync();
await using var context = await browser.NewContextAsync();
await context.Tracing.StartAsync(new()
{
Screenshots = true,
Snapshots = true
});
var page = await context.NewPageAsync();
await page.GotoAsync("https://playwright.dev");
await context.Tracing.StopAsync(new()
{
Path = "trace.zip"
});

方法

GroupAsync

新增于:v1.49 tracing.GroupAsync
警告

如果可用,请改用 test.step

在追踪信息中创建一个新组,将后续的任何 API 调用分配到该组,直到调用 Tracing.GroupEndAsync()。组可以嵌套,并会在追踪查看器中显示。

用法

// GroupAsync 和 GroupEndAsync 之间的所有操作
// 都将在跟踪查看器中显示为一个组。
await Page.Context.Tracing.GroupAsync("打开 Playwright.dev > API");
await Page.GotoAsync("https://playwright.dev/");
await Page.GetByRole(AriaRole.Link, new() { Name = "API" }).ClickAsync();
await Page.Context.Tracing.GroupEndAsync();

参数

  • name string#

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

  • options TracingGroupOptions?可选

    • Location Location?(可选# 为跟踪查看器中显示的组指定自定义位置。默认为 Tracing.GroupAsync() 调用的位置。

返回值


GroupEndAsync

新增于:v1.49 tracing.GroupEndAsync

关闭由 Tracing.GroupAsync() 创建的最后一个组。

用法

await Tracing.GroupEndAsync();

返回值


StartAsync

新增于:v1.12 tracing.StartAsync

开始跟踪。

备注

你可能更希望在配置文件中启用跟踪,而不是使用 Tracing.start

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

用法

using var playwright = await Playwright.CreateAsync();
var browser = await playwright.Chromium.LaunchAsync();
await using var context = await browser.NewContextAsync();
await context.Tracing.StartAsync(new()
{
Screenshots = true,
Snapshots = true
});
var page = await context.NewPageAsync();
await page.GotoAsync("https://playwright.dev");
await context.Tracing.StopAsync(new()
{
Path = "trace.zip"
});

参数

  • options TracingStartOptions?可选
    • Name string?(可选#

      如果指定,中间跟踪文件将保存到 BrowserType.LaunchAsync() 中指定的 TracesDir 目录内,文件名为给定的名称前缀。若要指定最终的跟踪压缩文件名,需改为将 path 选项传递给 Tracing.StopAsync()

    • Screenshots bool?(可选#

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

    • Snapshots bool?(可选#

      如果此选项为 true,跟踪将:

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

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

    • Title string?(可选新增于:v1.17#

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

返回值


StartChunkAsync

新增于:v1.15 tracing.StartChunkAsync

开始一个新的追踪块。如果你想在同一个 BrowserContext 上记录多个追踪信息,只需调用一次 Tracing.StartAsync(),然后使用 Tracing.StartChunkAsync()Tracing.StopChunkAsync() 创建多个追踪块。

用法

using var playwright = await Playwright.CreateAsync();
var browser = await playwright.Chromium.LaunchAsync();
await using var context = await browser.NewContextAsync();
await context.Tracing.StartAsync(new()
{
Screenshots = true,
Snapshots = true
});
var page = await context.NewPageAsync();
await page.GotoAsync("https://playwright.dev");

await context.Tracing.StartChunkAsync();
await page.GetByText("Get Started").ClickAsync();
// StartChunkAsync 和 StopChunkAsync 之间的所有操作都将记录在追踪信息中。
await context.Tracing.StopChunkAsync(new()
{
Path = "trace1.zip"
});

await context.Tracing.StartChunkAsync();
await page.GotoAsync("http://example.com");
// 保存包含不同操作的第二个追踪文件。
await context.Tracing.StopChunkAsync(new()
{
Path = "trace2.zip"
});

参数

  • options TracingStartChunkOptions?(可选)
    • Name string?(可选) 新增于:v1.32#

      如果指定了该参数,中间追踪文件将保存到 BrowserType.LaunchAsync() 中指定的 TracesDir 目录内,且文件名前缀为给定的名称。若要指定最终的追踪压缩文件名,需改为将 path 选项传递给 Tracing.StopChunkAsync()

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

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

返回值


StopAsync

新增于:v1.12 tracing.StopAsync

停止追踪。

用法

await Tracing.StopAsync(options);

参数

  • options TracingStopOptions?(可选)
    • Path string?(可选)#

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

返回值


StopChunkAsync

新增于:v1.15 tracing.StopChunkAsync

停止追踪块。有关多个追踪块的更多详细信息,请参阅 Tracing.StartChunkAsync()

用法

await Tracing.StopChunkAsync(options);

参数

  • options TracingStopChunkOptions?(可选)

返回值