调试测试
VS Code 调试器
我们建议使用VS Code 扩展进行调试,以获得更好的开发者体验。通过 VS Code 扩展,您可以在 VS Code 中直接调试测试,查看错误消息,设置断点并逐步执行测试。

错误消息
如果您的测试失败,VS Code 会在编辑器中直接显示错误消息,显示预期值、实际接收值以及完整的调用日志。

实时调试
您可以在 VS Code 中实时调试测试。在勾选了 Show Browser
选项后运行测试,点击 VS Code 中的任何定位器,它将在浏览器窗口中高亮显示。Playwright 还会显示是否有多个匹配项。

您还可以在 VS Code 中编辑定位器,Playwright 将在浏览器窗口中实时显示更改。

选择定位器
从测试侧边栏中点击选择定位器按钮,选择一个定位器并将其复制到您的测试文件中。然后在浏览器中点击您需要的元素,它将显示在 VS Code 的选择定位器框中。按键盘上的“Enter”键将定位器复制到剪贴板,然后粘贴到代码的任何位置。或者如果您想取消,请按“Escape”键。

Playwright 将查看您的页面并找出最佳定位器,优先考虑角色、文本和测试 ID 定位器。如果 Playwright 找到多个匹配定位器的元素,它将改进定位器,使其具有弹性并唯一标识目标元素,这样您就不必担心由于定位器导致测试失败。
在调试模式下运行
要设置断点,请单击您想要设置断点的行号旁边,直到出现一个红点。右键单击您想要运行的测试旁边的行,以调试模式运行测试。

将打开一个浏览器窗口,测试将运行并在设置断点的位置暂停。您可以逐步执行测试,暂停测试并从 VS Code 菜单中重新运行测试。

使用 Chrome DevTools 调试测试
在 VS Code 中,选择 Run Test
而不是 Debug Test
。启用 Show Browser
后,浏览器会话将重用,让您可以打开 Chrome DevTools 对测试和 Web 应用程序进行持续调试。
在不同的浏览器中调试
默认情况下,调试使用 Chromium 配置文件。您可以通过右键单击测试侧边栏中的调试图标,然后从下拉菜单中单击“选择默认配置文件”选项,在不同的浏览器上调试您的测试。

然后选择您想要用于调试测试的测试配置文件。每次以调试模式运行测试时,它都将使用您选择的配置文件。您可以通过右键单击测试所在的行号并从菜单中选择“调试测试”来以调试模式运行测试。

要了解更多关于调试的信息,请参阅Visual Studio Code 中的调试。
Playwright Inspector
Playwright Inspector 是一个 GUI 工具,可帮助您调试 Playwright 测试。它允许您逐步执行测试、实时编辑定位器、选择定位器和查看可操作性日志。

在调试模式下运行
使用 --debug
标志运行测试以打开检查器。这将配置 Playwright 进行调试并打开检查器。使用 --debug
时会配置其他有用的默认值
- 浏览器以有头模式启动
- 默认超时设置为 0 (= 无超时)
在所有浏览器上调试所有测试
要调试所有测试,请使用 --debug
标志运行测试命令。这将逐个运行测试,并为每个测试打开检查器和浏览器窗口。
npx playwright test --debug
在所有浏览器上调试一个测试
要在特定行上调试一个测试,请运行测试命令,后跟测试文件的名称和您要调试的测试的行号,然后是 --debug
标志。这将在您的playwright.config
中配置的每个浏览器中运行一个测试并打开检查器。
npx playwright test example.spec.ts:10 --debug
在特定浏览器上调试
在 Playwright 中,您可以在playwright.config
中配置项目。配置后,您可以使用 --project
标志,后跟您在 playwright.config
中配置的项目名称,在特定浏览器或移动视口上调试测试。
npx playwright test --project=chromium --debug
npx playwright test --project="Mobile Safari" --debug
npx playwright test --project="Microsoft Edge" --debug
在特定浏览器上调试一个测试
要在特定浏览器上运行一个测试,请添加测试文件的名称和您要调试的测试的行号,以及 --project
标志,后跟项目名称。
npx playwright test example.spec.ts:10 --project=webkit --debug
逐步执行您的测试
您可以使用 Inspector 顶部的工具栏播放、暂停或逐步执行测试的每个操作。您可以看到当前操作在测试代码中高亮显示,匹配的元素在浏览器窗口中高亮显示。

从特定断点运行测试
为了加快调试过程,您可以在测试中添加一个 page.pause() 方法。这样,您就不必逐步执行测试的每个操作才能到达您想要调试的点。
await page.pause();
添加 page.pause()
调用后,以调试模式运行测试。单击 Inspector 中的“Resume”按钮将运行测试,并且只在 page.pause()
处停止。

实时编辑定位器
在调试模式下运行时,您可以实时编辑定位器。在“选择定位器”按钮旁边有一个字段,显示测试暂停的定位器。您可以直接在选择定位器字段中编辑此定位器,匹配的元素将在浏览器窗口中高亮显示。

选择定位器
在调试时,您可能需要选择一个更具弹性的定位器。您可以通过点击选择定位器按钮,然后将鼠标悬停在浏览器窗口中的任何元素上来实现此操作。当鼠标悬停在元素上时,您会看到定位此元素所需的代码在下方高亮显示。点击浏览器中的元素将把定位器添加到字段中,您可以在其中进行调整或将其复制到代码中。

Playwright 将查看您的页面并找出最佳定位器,优先考虑角色、文本和测试 ID 定位器。如果 Playwright 找到多个匹配定位器的元素,它将改进定位器,使其具有弹性并唯一标识目标元素,这样您就不必担心由于定位器导致测试失败。
可操作性日志
当 Playwright 在点击操作上暂停时,它已经执行了可以在日志中找到的可操作性检查。这可以帮助您了解测试期间发生了什么以及 Playwright 做了什么或试图做什么。日志会告诉您元素是否可见、启用和稳定,定位器是否解析为元素,是否滚动到视图中,等等。如果无法达到可操作性,它将显示该操作为待定。

跟踪查看器
Playwright 跟踪查看器是一个 GUI 工具,可让您探索记录的 Playwright 测试跟踪。您可以在左侧向前和向后浏览每个操作,并直观地查看操作期间发生的情况。在屏幕中央,您可以看到操作的 DOM 快照。在右侧,您可以看到操作详细信息,例如时间、参数、返回值和日志。您还可以探索控制台消息、网络请求和源代码。
要了解有关如何记录跟踪和使用跟踪查看器的更多信息,请查阅跟踪查看器指南。
浏览器开发者工具
在以调试模式运行并设置 PWDEBUG=console
时,开发者工具控制台中会提供一个 playwright
对象。开发者工具可以帮助您
- 检查 DOM 树并查找元素选择器
- 在执行期间查看控制台日志(或者学习如何通过 API 读取日志)
- 检查网络活动和其他开发者工具功能
这也会将 Playwright 的默认超时设置为 0 (= 无超时)。

要使用浏览器开发者工具调试测试,首先在测试中设置一个断点,使用 page.pause() 方法暂停执行。
await page.pause();
在测试中设置断点后,您可以使用 PWDEBUG=console
运行测试。
- Bash
- PowerShell
- 批处理
PWDEBUG=console npx playwright test
$env:PWDEBUG="console"
npx playwright test
set PWDEBUG=console
npx playwright test
Playwright 启动浏览器窗口后,您可以打开开发者工具。playwright
对象将在控制台面板中可用。
playwright.$(selector)
使用实际的 Playwright 查询引擎查询 Playwright 选择器,例如
playwright.$('.auth-form >> text=Log in');
<button>Log in</button>
playwright.$$(selector)
与 playwright.$
相同,但返回所有匹配的元素。
playwright.$$('li >> text=John')
[<li>, <li>, <li>, <li>]
playwright.inspect(selector)
在元素面板中显示元素。
playwright.inspect('text=Log in')
playwright.locator(selector)
创建定位器并查询匹配元素,例如
playwright.locator('.auth-form', { hasText: 'Log in' });
Locator ()
- element: button
- elements: [button]
playwright.selector(element)
为给定元素生成选择器。例如,在元素面板中选择一个元素并传入 $0
playwright.selector($0)
"div[id="glow-ingress-block"] >> text=/.*Hello.*/"
详细的 API 日志
Playwright 支持使用 DEBUG
环境变量进行详细日志记录。
- Bash
- PowerShell
- 批处理
DEBUG=pw:api npx playwright test
$env:DEBUG="pw:api"
npx playwright test
set DEBUG=pw:api
npx playwright test
对于 WebKit:在执行期间启动 WebKit Inspector 将阻止 Playwright 脚本继续执行,并重置预配置的用户代理和设备仿真。
有头模式
Playwright 默认以无头模式运行浏览器。要更改此行为,请使用 headless: false
作为启动选项。
您还可以使用 slowMo 选项来减慢执行速度(每操作 N 毫秒),并在调试时进行跟踪。
// Chromium, Firefox, or WebKit
await chromium.launch({ headless: false, slowMo: 100 });