测试生成器
简介
Playwright 具备在您在浏览器中执行操作时为您生成测试的能力,并且是快速开始测试的好方法。 Playwright 将查看您的页面并找出最佳定位器,优先考虑角色、文本和测试 ID 定位器。 如果生成器找到与定位器匹配的多个元素,它将改进定位器,使其具有弹性,从而唯一地标识目标元素。
使用 Playwright Inspector 生成测试
运行 codegen
命令时,将打开两个窗口:一个浏览器窗口,您可以在其中与要测试的网站进行交互;另一个是 Playwright Inspector 窗口,您可以在其中录制测试,然后将其复制到编辑器中。
运行 Codegen
使用 codegen
命令运行测试生成器,后跟要为其生成测试的网站的 URL。 URL 是可选的,您可以始终在不带 URL 的情况下运行命令,然后直接在浏览器窗口中添加 URL。
mvn exec:java -e -D exec.mainClass=com.microsoft.playwright.CLI -D exec.args="codegen demo.playwright.dev/todomvc"
录制测试
运行 codegen
命令并在浏览器窗口中执行操作。 Playwright 将为用户交互生成代码,您可以在 Playwright Inspector 窗口中看到这些代码。 完成录制测试后,停止录制并按复制按钮将生成的测试复制到编辑器中。
使用测试生成器,您可以录制
- 通过与页面交互来执行单击或填充等操作
- 断言:通过单击工具栏中的图标之一,然后单击页面上的元素以进行断言。 您可以选择
'assert visibility'
以断言元素是否可见'assert text'
以断言元素是否包含特定文本'assert value'
以断言元素是否具有特定值
完成与页面的交互后,按录制按钮停止录制,然后使用复制按钮将生成的代码复制到编辑器中。
使用清除按钮清除代码以重新开始录制。 完成后,关闭 Playwright inspector 窗口或停止终端命令。
生成定位器
您可以使用测试生成器生成定位器。
- 按下
'Record'
按钮停止录制,'Pick Locator'
按钮将出现。 - 单击
'Pick Locator'
按钮,然后将鼠标悬停在浏览器窗口中的元素上,以查看在每个元素下方突出显示的定位器。 - 要选择定位器,请单击要定位的元素,该定位器的代码将出现在“Pick Locator”按钮旁边的字段中。
- 然后,您可以在此字段中编辑定位器以对其进行微调,或使用复制按钮复制它并将其粘贴到代码中。
模拟
您可以使用测试生成器来生成使用模拟的测试,以便为特定的视口、设备、配色方案生成测试,以及模拟地理位置、语言或时区。 测试生成器还可以在保留身份验证状态的同时生成测试。
模拟视口大小
Playwright 打开一个浏览器窗口,其视口设置为特定的宽度和高度,并且不具有响应性,因为测试需要在相同的条件下运行。 使用 --viewport
选项生成具有不同视口大小的测试。
mvn exec:java -e -D exec.mainClass=com.microsoft.playwright.CLI -D exec.args="codegen --viewport-size='800,600' playwright.dev"

模拟设备
使用 --device
选项录制脚本和测试,同时模拟移动设备,该选项设置视口大小和用户代理等。
mvn exec:java -e -D exec.mainClass=com.microsoft.playwright.CLI -D exec.args='codegen --device="iPhone 13" playwright.dev'

模拟配色方案
使用 --color-scheme
选项录制脚本和测试,同时模拟配色方案。
mvn exec:java -e -D exec.mainClass=com.microsoft.playwright.CLI -D exec.args="codegen --color-scheme=dark playwright.dev"

模拟地理位置、语言和时区
使用 --timezone
、--geolocation
和 --lang
选项录制脚本和测试,同时模拟时区、语言和位置。 页面打开后
- 接受 Cookie
- 在右上角,单击“定位我”按钮以查看地理位置的实际效果。
mvn exec:java -e -D exec.mainClass=com.microsoft.playwright.CLI -D exec.args='codegen --timezone="Europe/Rome" --geolocation="41.890221,12.492348" --lang="it-IT" bing.com/maps'

保留身份验证状态
使用 --save-storage
运行 codegen
以在会话结束时保存 cookies、localStorage 和 IndexedDB 数据。 这对于单独记录身份验证步骤并在以后录制更多测试时重复使用它非常有用。
mvn exec:java -e -D exec.mainClass=com.microsoft.playwright.CLI -D exec.args="codegen github.com/microsoft/playwright --save-storage=auth.json"

登录
执行身份验证并关闭浏览器后,auth.json
将包含存储状态,然后您可以在测试中重复使用该状态。

请确保仅在本地使用 auth.json
,因为它包含敏感信息。 将其添加到 .gitignore
或在完成生成测试后将其删除。
加载身份验证状态
使用 --load-storage
运行以使用先前从 auth.json
加载的存储。 这样,所有 cookies、localStorage 和 IndexedDB 数据都将恢复,从而使大多数 Web 应用程序无需再次登录即可进入身份验证状态。 这意味着您可以从登录状态继续生成测试。
mvn exec:java -e -D exec.mainClass=com.microsoft.playwright.CLI -D exec.args="codegen --load-storage=auth.json github.com/microsoft/playwright"

使用自定义设置录制
如果您想在某些非标准设置中使用 codegen(例如,使用 BrowserContext.route()),则可以调用 Page.pause(),这将打开一个带有 codegen 控件的单独窗口。
import com.microsoft.playwright.*;
public class Example {
public static void main(String[] args) {
try (Playwright playwright = Playwright.create()) {
BrowserType chromium = playwright.chromium();
// Make sure to run headed.
Browser browser = chromium.launch(new BrowserType.LaunchOptions().setHeadless(false));
// Setup context however you like.
BrowserContext context = browser.newContext(/* pass any options */);
context.route("**/*", route -> route.resume());
// Pause the page, and start recording manually.
Page page = context.newPage();
page.pause();
}
}
}