跳到主要内容

调试测试

VS Code 调试器

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

running test in debug mode

错误消息

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

error messaging in vs code

实时调试

您可以在 VS Code 中实时调试测试。 在选中“显示浏览器”选项运行测试后,单击 VS Code 中的任何定位器,它将在浏览器窗口中突出显示。 Playwright 还会告诉您是否存在多个匹配项。

live debugging in VS Code

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

live debugging in VS Code

选择定位器

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

Pick locators

Playwright 将查看您的页面并找出最佳定位器,优先考虑角色、文本和测试 ID 定位器。 如果 Playwright 找到多个与定位器匹配的元素,它将改进定位器,使其具有弹性和唯一识别目标元素,因此您不必担心因定位器而导致测试失败。

在调试模式下运行

要设置断点,请单击要设置断点的行号旁边,直到出现红色圆点。 通过右键单击要运行的测试旁边的行来在调试模式下运行测试。

setting debug test mode

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

running test in debug mode

在不同的浏览器中调试

默认情况下,调试是使用 Chromium 配置文件完成的。 您可以通过右键单击测试侧边栏中的调试图标,然后从下拉菜单中单击“选择默认配置文件”选项,在不同的浏览器上调试测试。

debugging on specific profile

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

choosing a profile for debugging

要了解有关调试的更多信息,请参阅在 Visual Studio Code 中调试

Playwright Inspector

Playwright Inspector 是一个 GUI 工具,可帮助您调试 Playwright 测试。 它允许您单步执行测试、实时编辑定位器、选择定位器并查看可操作性日志。

Playwright Inspector

在调试模式下运行

使用 --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 顶部的工具栏播放、暂停或单步执行测试的每个操作。 您可以在测试代码中看到当前突出显示的操作,并在浏览器窗口中突出显示匹配的元素。

Playwright Inspector and browser

从特定断点运行测试

为了加快调试过程,您可以将page.pause()方法添加到您的测试中。 这样,您就不必单步执行测试的每个操作即可到达要调试的点。

await page.pause();

添加 page.pause() 调用后,在调试模式下运行测试。 单击 Inspector 中的“恢复”按钮将运行测试,并且仅在 page.pause() 处停止。

test with page.pause

实时编辑定位器

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

live editing locators

选择定位器

调试时,您可能需要选择更具弹性的定位器。 您可以通过单击选择定位器按钮并将鼠标悬停在浏览器窗口中的任何元素上来执行此操作。 悬停在元素上时,您将看到突出显示在下方以定位此元素所需的代码。 单击浏览器中的元素会将定位器添加到字段中,您可以在其中对其进行调整或将其复制到代码中。

Picking locators

Playwright 将查看您的页面并找出最佳定位器,优先考虑角色、文本和测试 ID 定位器。 如果 Playwright 找到多个与定位器匹配的元素,它将改进定位器,使其具有弹性和唯一识别目标元素,因此您不必担心因定位器而导致测试失败。

可操作性日志

在 Playwright 暂停点击操作时,它已经执行了可以在日志中找到的可操作性检查。 这可以帮助您了解测试期间发生的事情以及 Playwright 所做或尝试做的事情。 日志会告诉您元素是否可见、启用和稳定,定位器是否解析为元素、滚动到视图等等。 如果无法实现可操作性,它会将操作显示为待处理。

Actionability Logs

跟踪查看器

Playwright 跟踪查看器是一个 GUI 工具,可让您浏览记录的 Playwright 测试跟踪。 您可以在左侧来回浏览每个操作,并在视觉上查看操作期间发生的情况。 在屏幕中间,您可以看到操作的 DOM 快照。 在右侧,您可以看到操作详细信息,例如时间、参数、返回值和日志。 您还可以浏览控制台消息、网络请求和源代码。

要了解有关如何记录跟踪和使用跟踪查看器的更多信息,请查看跟踪查看器指南。

浏览器开发者工具

PWDEBUG=console 的调试模式下运行时,playwright 对象在开发者工具控制台中可用。 开发者工具可以帮助您

  • 检查 DOM 树并查找元素选择器
  • 查看执行期间的控制台日志(或了解如何通过 API 读取日志
  • 检查网络活动和其他开发者工具功能

这还将 Playwright 的默认超时设置为 0(= 无超时)。

Browser Developer Tools with Playwright object

要使用浏览器开发者工具调试测试,请首先在测试中设置断点,以使用page.pause()方法暂停执行。

await page.pause();

在测试中设置断点后,您可以使用 PWDEBUG=console 运行测试。

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 环境变量进行详细日志记录。

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 });