跳至主要内容

测试生成器

简介

Playwright 能够在您在浏览器中执行操作时为您生成测试,是快速开始测试的好方法。Playwright 会查看您的页面并找出最佳定位器,优先考虑 角色、文本和测试 ID 定位器。如果生成器找到多个与定位器匹配的元素,它将改进定位器以使其具有弹性,从而唯一标识目标元素。

使用 Playwright 检查器生成测试

运行 codegen 命令时,将打开两个窗口,一个浏览器窗口,您可以在其中与要测试的网站交互,以及 Playwright 检查器窗口,您可以在其中录制测试,然后将其复制到您的编辑器中。

运行 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 检查器窗口中看到这些代码。完成测试录制后,停止录制并按“复制”按钮将生成的测试复制到您的编辑器中。

使用测试生成器,您可以录制

  • 只需与页面交互即可执行单击或填充等操作
  • 通过单击工具栏中的一个图标,然后单击页面上的一个元素以针对其进行断言来进行断言。您可以选择
    • 'assert visibility' 断言元素可见
    • 'assert text' 断言元素包含特定文本
    • 'assert value' 断言元素具有特定值

recording a test

与页面交互完成后,按“录制”按钮停止录制,然后使用“复制”按钮将生成的代码复制到您的编辑器中。

使用“清除”按钮清除代码以重新开始录制。完成后,关闭 Playwright 检查器窗口或停止终端命令。

生成定位器

您可以使用测试生成器生成 定位器

  • '录制' 按钮停止录制,然后将显示 '选择定位器' 按钮。
  • 单击 '选择定位器' 按钮,然后将鼠标悬停在浏览器窗口中的元素上以查看每个元素下方突出显示的定位器。
  • 要选择定位器,请单击要定位的元素,该定位器的代码将出现在“选择定位器”按钮旁边的字段中。
  • 然后,您可以在此字段中编辑定位器以对其进行微调,或者使用复制按钮将其复制并粘贴到您的代码中。

picking a locator

模拟

您可以使用测试生成器使用模拟生成测试,以便为特定视口、设备、配色方案生成测试,以及模拟地理位置、语言或时区。测试生成器还可以在保留身份验证状态的同时生成测试。

模拟视口大小

Playwright 打开一个浏览器窗口,其视口设置为特定宽度和高度,并且没有响应,因为需要在相同条件下运行测试。使用 --viewport 选项以不同的视口大小生成测试。

mvn exec:java -e -D exec.mainClass=com.microsoft.playwright.CLI -D exec.args="codegen --viewport-size=800,600 playwright.dev"
Codegen generating code for tests for playwright.dev website with a specific viewport java

模拟设备

使用 --device 选项录制脚本和测试,同时模拟移动设备,该选项除其他外还设置视口大小和用户代理。

mvn exec:java -e -D exec.mainClass=com.microsoft.playwright.CLI -D exec.args='codegen --device="iPhone 13" playwright.dev'
Codegen generating code for tests for playwright.dev website emulated for iPhone 13 java

模拟配色方案

使用 --color-scheme 选项录制脚本和测试,同时模拟配色方案。

mvn exec:java -e -D exec.mainClass=com.microsoft.playwright.CLI -D exec.args="codegen --color-scheme=dark playwright.dev"
Codegen generating code for tests for playwright.dev website in dark mode java

模拟地理位置、语言和时区

使用 --timezone--geolocation--lang 选项录制脚本和测试,同时模拟时区、语言和位置。页面打开后

  1. 接受 Cookie
  2. 在右上方,单击“定位我”按钮以查看地理位置的实际效果。
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'
Codegen generating code for tests for bing maps showing timezone, geolocation as Rome, Italy and in Italian language java

保留身份验证状态

使用 --save-storage 运行 codegen 以在会话结束时保存 CookielocalStorage。这对于分别录制身份验证步骤并在以后录制更多测试时重用它很有用。

mvn exec:java -e -D exec.mainClass=com.microsoft.playwright.CLI -D exec.args="codegen github.com/microsoft/playwright  --save-storage=auth.json"
github page before logging in java

登录

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

login to GitHub screen

确保仅在本地使用 auth.json,因为它包含敏感信息。将其添加到您的 .gitignore 中,或者在完成测试生成后将其删除。

加载身份验证状态

使用 --load-storage 运行以使用 auth.json 中先前加载的存储。这样,所有 CookielocalStorage 都将被恢复,从而使大多数 Web 应用进入身份验证状态,而无需再次登录。这意味着您可以从登录状态继续生成测试。

mvn exec:java -e -D exec.mainClass=com.microsoft.playwright.CLI -D exec.args="codegen --load-storage=auth.json github.com/microsoft/playwright"
github signed in showing use of load storage java

使用自定义设置录制

如果您想在某些非标准设置中使用 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();
}
}
}