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

实时调试
您可以在 VS Code 中实时调试测试。运行测试时,选中 “Show Browser” 选项后,点击 VS Code 中的任何定位器,它将在浏览器窗口中被高亮显示。如果有多个匹配项,Playwright 也会告知您。

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

选择定位器
通过点击测试侧边栏的 “Pick locator” 按钮,选择定位器并将其复制到您的测试文件中。然后在浏览器中点击所需的元素,定位器将显示在 VS Code 的 Pick locator 框中。按下键盘上的 “Enter” 将定位器复制到剪贴板,并可以粘贴到代码中;按 “Escape” 则取消操作。

Playwright 会分析页面并找出最佳的定位器,优先选择角色、文本和测试 ID 定位器。如果 Playwright 找到多个匹配的元素,它会优化定位器,确保能够唯一标识目标元素,从而避免因定位器问题导致的测试失败。
Playwright Inspector
Playwright Inspector 是一个图形界面工具,帮助你调试 Playwright 测试。它允许你逐步执行测试、实时编辑定位器、选择定位器并查看可操作性日志。

以调试模式运行
使用 --debug
标志运行你的测试以打开 Inspector。这将配置 Playwright 为调试模式并打开 Inspector。使用 --debug
时,会配置一些有用的默认设置:
-
浏览器以有头模式启动
-
默认超时设置为 0(即没有超时)
在所有浏览器上调试所有测试
要调试所有测试,运行带有 --debug
标志的测试命令。这将逐个运行测试,并为每个测试打开 Inspector 和浏览器窗口。
npx playwright test --debug
在所有浏览器上调试一个测试
要在特定行调试一个测试,运行测试命令,后跟测试文件名和你想调试的测试行号,再加上 --debug
标志。这将在 playwright.config
中配置的每个浏览器中运行一个单独的测试,并打开 Inspector。
npx playwright test example.spec.ts:10 --debug
从特定的断点运行测试
为了加快调试过程,你可以在测试中添加 page.pause()
方法。这样,你就不必逐步执行每个操作,直接跳到你想调试的地方。
await page.pause();
一旦你添加了 page.pause()
调用,在调试模式下运行你的测试。点击 Inspector 中的 "Resume" 按钮将继续执行测试,并且只会在 page.pause()
处暂停。

实时编辑定位器
在调试模式下运行时,你可以实时编辑定位器。在 "Pick Locator" 按钮旁边有一个字段,显示当前暂停的定位器。你可以直接在 "Pick Locator" 字段中编辑这个定位器,匹配的元素将在浏览器窗口中高亮显示。

Trace Viewer
Playwright Trace Viewer 是一个 GUI 工具,帮助您查看 Playwright 测试的执行过程。您可以回放每个操作,看到执行时的 DOM 快照、时间、参数、返回值、日志等信息,并能查看控制台消息、网络请求和源代码。
要了解如何记录 trace 并使用 Trace Viewer,请参阅 Trace Viewer 指南。
浏览器开发者工具
当使用调试模式并设置 PWDEBUG=console
时,Playwright
对象将可在浏览器的开发者工具控制台中访问。开发者工具可帮助您:
-
检查 DOM 树并查找元素选择器
-
查看执行过程中的控制台日志(或学习如何通过 API 阅读日志)
-
检查网络活动及其他开发者工具功能
这也会将 Playwright 的默认超时设置为 0(即没有超时)。

要使用浏览器开发者工具调试你的测试,首先在测试中设置一个断点,通过调用 page.pause()
方法来暂停执行。
await page.pause();
一旦在测试中设置了断点,你可以使用 PWDEBUG=console
运行你的测试。
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>]