跳至主要内容

跟踪查看器

介绍

Playwright 跟踪查看器是一个 GUI 工具,可帮助您在脚本运行后探索录制的 Playwright 跟踪。跟踪是调试测试(尤其是测试在 CI 上失败时)的好方法。您可以在 本地 或浏览器中的 trace.playwright.dev 上打开跟踪。

跟踪查看器功能

操作

在“操作”选项卡中,您可以查看每个操作使用了什么定位器以及每个操作的运行时间。将鼠标悬停在测试的每个操作上,直观地查看 DOM 快照的变化。在时间轴上前后移动,并单击操作以进行检查和调试。使用“之前”和“之后”选项卡直观地查看操作之前和之后发生了什么。

actions tab in trace viewer

选择每个操作将显示

  • 操作快照
  • 操作日志
  • 源代码位置

截图

在使用 setScreenshots 选项(默认情况下)进行跟踪时,每个跟踪都会记录屏幕截图并将其渲染为胶片条。您可以将鼠标悬停在胶片条上以查看每个操作和状态的放大图像,这有助于您轻松找到要检查的操作。

双击操作以查看该操作的时间范围。您可以使用时间轴上的滑块来增加所选操作,这些操作将显示在“操作”选项卡中,所有控制台日志和网络日志将被过滤以仅显示所选操作的日志。

timeline view in trace viewer

快照

在使用 setSnapshots 选项(默认情况下)进行跟踪时,Playwright 会为每个操作捕获一组完整的 DOM 快照。根据操作的类型,它将捕获

类型描述
之前在调用操作时的一个快照。
操作在执行输入时的一个快照。这种类型的快照在探索 Playwright 到底在哪里单击时特别有用。
之后操作后的一个快照。

以下是典型的“操作”快照的样子

action tab in trace viewer

注意,它同时突出显示了 DOM 节点和确切的单击位置。

源代码

单击侧边栏中的操作时,该操作的代码行将在源代码面板中突出显示。

showing source code tab in trace viewer

调用

“调用”选项卡显示有关操作的信息,例如它花费的时间、使用了什么定位器、是否处于严格模式以及使用了什么键。

showing call tab in trace viewer

日志

查看测试的完整日志,以更好地了解 Playwright 在幕后做了什么,例如滚动到视图中、等待元素可见、启用并稳定,以及执行单击、填充、按压等操作。

showing log of tests in trace viewer

错误

如果测试失败,您将在“错误”选项卡中看到每个测试的错误消息。时间轴也将显示一条红线,突出显示错误发生的位置。您还可以单击“源代码”选项卡以查看错误发生在源代码的哪一行。

showing errors in trace viewer

控制台

查看来自浏览器以及测试的控制台日志。不同的图标显示控制台日志来自浏览器还是测试文件。

showing log of tests in trace viewer

双击操作侧边栏中的测试操作。这将过滤控制台以仅显示在该操作期间生成的日志。单击“显示所有”按钮以再次查看所有控制台日志。

使用时间轴来过滤操作,方法是单击一个起点并拖动到一个终点。控制台选项卡也将被过滤以仅显示在所选操作期间生成的日志。

网络

“网络”选项卡显示您在测试期间发出的所有网络请求。您可以按不同类型的请求、状态代码、方法、请求、内容类型、持续时间和大小进行排序。单击请求以查看有关它的更多信息,例如请求标头、响应标头、请求主体和响应主体。

network requests tab in trace viewer

双击操作侧边栏中的测试操作。这将过滤网络请求以仅显示在该操作期间发出的请求。单击“显示所有”按钮以再次查看所有网络请求。

使用时间轴来过滤操作,方法是单击一个起点并拖动到一个终点。“网络”选项卡也将被过滤以仅显示在所选操作期间发出的网络请求。

元数据

在“操作”选项卡旁边,您将找到“元数据”选项卡,其中将显示有关测试的更多信息,例如浏览器、视窗大小、测试持续时间等。

meta data in trace viewer

录制跟踪

可以使用 BrowserContext.tracing() API 录制跟踪,如下所示

Browser browser = browserType.launch();
BrowserContext context = browser.newContext();

// Start tracing before creating / navigating a page.
context.tracing().start(new Tracing.StartOptions()
.setScreenshots(true)
.setSnapshots(true)
.setSources(true));

Page page = context.newPage();
page.navigate("https://playwright.net.cn");

// Stop tracing and export it into a zip archive.
context.tracing().stop(new Tracing.StopOptions()
.setPath(Paths.get("trace.zip")));

这将记录跟踪并将它放置到名为 trace.zip 的文件中。

打开跟踪

您可以使用 Playwright CLI 或在浏览器中的 trace.playwright.dev 上打开保存的跟踪。请确保添加 trace.zip 文件所在的完整路径。

mvn exec:java -e -D exec.mainClass=com.microsoft.playwright.CLI -D exec.args="show-trace trace.zip"

使用 trace.playwright.dev

trace.playwright.dev 是跟踪查看器的静态托管变体。您可以使用拖放上传跟踪文件。

Drop Playwright Trace to load

查看远程跟踪

您可以使用其 URL 打开远程跟踪。它们可以在 CI 运行中生成,这使得在无需手动下载文件的情况下查看远程跟踪变得很容易。

mvn exec:java -e -D exec.mainClass=com.microsoft.playwright.CLI -D exec.args="show-trace https://example.com/trace.zip"

您还可以将上传的跟踪的 URL(例如在您的 CI 中)从一些可访问的存储作为参数传递。可能会应用 CORS(跨源资源共享)规则。

https://trace.playwright.dev/?trace=https://demo.playwright.dev/reports/todomvc/data/cb0fa77ebd9487a5c899f3ae65a7ffdbac681182.zip