测试生成器
简介
Playwright 可以根据您在浏览器中执行的操作为您生成测试,是快速入门测试的绝佳方式。Playwright 会查看您的页面并找出最佳定位器,优先考虑 角色、文本和测试 ID 定位器。如果生成器找到多个与定位器匹配的元素,它会改进定位器以使其具有弹性,以便唯一地识别目标元素。
使用 Playwright Inspector 生成测试
运行 codegen
命令时,将打开两个窗口,一个浏览器窗口,您可以在其中与要测试的网站进行交互,以及 Playwright Inspector 窗口,您可以在其中记录测试,然后将它们复制到您的编辑器中。
运行 Codegen
使用 codegen
命令运行测试生成器,后跟要为其生成测试的网站的 URL。URL 是可选的,您可以始终在没有 URL 的情况下运行命令,然后直接将 URL 添加到浏览器窗口中。
pwsh bin/Debug/netX/playwright.ps1 codegen demo.playwright.dev/todomvc
录制测试
运行 codegen
命令并在浏览器窗口中执行操作。Playwright 将生成用户交互的代码,您可以在 Playwright Inspector 窗口中看到。完成测试录制后,停止录制并按下 **复制** 按钮将生成的测试复制到您的编辑器中。
使用测试生成器,您可以录制
- 只需与页面交互即可执行诸如单击或填写之类的操作
- 通过单击工具栏中的一个图标,然后单击页面上的一个元素来断言以断言。您可以选择
'断言可见性'
以断言元素可见'断言文本'
以断言元素包含特定文本'断言值'
以断言元素具有特定值
完成与页面的交互后,按下 **录制** 按钮停止录制,并使用 **复制** 按钮将生成的代码复制到您的编辑器中。
使用 **清除** 按钮清除代码以重新开始录制。完成后,关闭 Playwright Inspector 窗口或停止终端命令。
生成定位器
您可以使用测试生成器生成 定位器。
- 按下
'录制'
按钮停止录制,'选择定位器'
按钮将出现。 - 单击
'选择定位器'
按钮,然后将鼠标悬停在浏览器窗口中的元素上以查看每个元素下方突出显示的定位器。 - 要选择定位器,请单击要定位的元素,该定位器的代码将出现在选择定位器按钮旁边的字段中。
- 然后,您可以在此字段中编辑定位器以对其进行微调,或使用复制按钮将其复制并粘贴到您的代码中。
模拟
您可以使用测试生成器使用模拟来生成测试,以便为特定视口、设备、颜色方案生成测试,以及模拟地理位置、语言或时区。测试生成器还可以在保留身份验证状态的同时生成测试。
模拟视口大小
Playwright 打开一个浏览器窗口,其视口设置为特定宽度和高度,并且没有响应性,因为测试需要在相同的条件下运行。使用 --viewport
选项以不同的视口大小生成测试。
pwsh bin/Debug/netX/playwright.ps1 codegen --viewport-size=800,600 playwright.dev
模拟设备
使用 --device
选项录制脚本和测试,该选项会设置视口大小和用户代理等。它还会模拟移动设备。
pwsh bin/Debug/netX/playwright.ps1 codegen --device="iPhone 13" playwright.dev
模拟颜色方案
使用 --color-scheme
选项录制脚本和测试,同时模拟颜色方案。
pwsh bin/Debug/netX/playwright.ps1 codegen --color-scheme=dark playwright.dev
模拟地理位置、语言和时区
使用 --timezone
、--geolocation
和 --lang
选项录制脚本和测试,同时模拟时区、语言和位置。页面打开后
- 接受 cookie
- 在右上角,单击定位我按钮以查看地理位置的实际效果。
pwsh bin/Debug/netX/playwright.ps1 codegen --timezone="Europe/Rome" --geolocation="41.890221,12.492348" --lang="it-IT" bing.com/maps
保留身份验证状态
使用 --save-storage
运行 codegen
以在会话结束时保存 cookie 和 localStorage。这对于单独记录身份验证步骤并在以后记录更多测试时重用它很有用。
pwsh bin/Debug/netX/playwright.ps1 codegen github.com/microsoft/playwright --save-storage=auth.json
登录
执行身份验证并关闭浏览器后,auth.json
将包含您可以在测试中重用的存储状态。
确保您只在本地使用 auth.json
,因为它包含敏感信息。将其添加到 .gitignore
中,或者在完成测试生成后将其删除。
加载身份验证状态
使用 --load-storage
运行以使用来自 auth.json
的先前加载的存储。这样,所有 cookie 和 localStorage 将被恢复,从而使大多数 Web 应用程序进入身份验证状态,而无需再次登录。这意味着您可以从已登录状态继续生成测试。
pwsh bin/Debug/netX/playwright.ps1 codegen --load-storage=auth.json github.com/microsoft/playwright
使用自定义设置录制
如果您想在某些非标准设置中使用 codegen(例如,使用 BrowserContext.RouteAsync()),可以调用 Page.PauseAsync(),它将打开一个包含 codegen 控件的单独窗口。
using Microsoft.Playwright;
using var playwright = await Playwright.CreateAsync();
var chromium = playwright.Chromium;
// Make sure to run headed.
var browser = await chromium.LaunchAsync(new() { Headless = false });
// Setup context however you like.
var context = await browser.NewContextAsync(); // Pass any options
await context.RouteAsync("**/*", route => route.ContinueAsync());
// Pause the page, and start recording manually.
var page = await context.NewPageAsync();
await page.PauseAsync();