跳到主要内容

测试生成器

简介

Playwright 具备在你执行浏览器操作时为你生成测试的能力,是快速开始测试的好方法。Playwright 将查看你的页面并找出最佳定位器,优先考虑 role、text 和 test id 定位器。如果生成器找到与定位器匹配的多个元素,它将改进定位器,使其具有唯一标识目标元素的弹性。

使用 Playwright Inspector 生成测试

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

运行 Codegen

使用 codegen 命令运行测试生成器,后跟要为其生成测试的网站的 URL。URL 是可选的,你可以始终在不带 URL 的情况下运行命令,然后直接将 URL 添加到浏览器窗口中。

playwright codegen demo.playwright.dev/todomvc

录制测试

运行 codegen 命令并在浏览器窗口中执行操作。Playwright 将为用户交互生成代码,你可以在 Playwright Inspector 窗口中看到这些代码。完成测试录制后,停止录制并按下复制按钮,将生成的测试复制到编辑器中。

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

  • 诸如单击或填充之类的操作,只需与页面交互即可
  • 断言,通过单击工具栏中的图标之一,然后单击页面上的元素以进行断言。你可以选择
    • 'assert visibility' 以断言元素是否可见
    • 'assert text' 以断言元素是否包含特定文本
    • 'assert value' 以断言元素是否具有特定值

recording a test

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

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

生成定位器

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

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

picking a locator

模拟

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

模拟视口大小

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

playwright codegen --viewport-size="800,600" playwright.dev
Codegen generating code for tests for playwright.dev website with a specific viewport python

模拟设备

在使用 --device 选项模拟移动设备时录制脚本和测试,该选项设置视口大小和用户代理等。

playwright codegen --device="iPhone 13" playwright.dev
Codegen generating code for tests for playwright.dev website emulated for iPhone 13 python

模拟配色方案

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

playwright codegen --color-scheme=dark playwright.dev
Codegen generating code for tests for playwright.dev website in dark mode python

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

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

  1. 接受 Cookie
  2. 在右上角,单击“定位我”按钮以查看地理位置的实际效果。
playwright 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 python

保留身份验证状态

运行带有 --save-storagecodegen 以在会话结束时保存 cookielocalStorageIndexedDB 数据。这对于单独录制身份验证步骤并在以后录制更多测试时重用它非常有用。

playwright codegen github.com/microsoft/playwright --save-storage=auth.json
github page before logging in python

登录

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

login to GitHub screen

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

加载身份验证状态

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

playwright codegen --load-storage=auth.json github.com/microsoft/playwright
github signed in showing use of load storage python

使用自定义设置录制

如果要在某些非标准设置中使用 codegen(例如,使用 browser_context.route()),可以调用 page.pause(),这将打开一个带有 codegen 控件的单独窗口。

from playwright.sync_api import sync_playwright

with sync_playwright() as p:
# Make sure to run headed.
browser = p.chromium.launch(headless=False)

# Setup context however you like.
context = browser.new_context() # Pass any options
context.route('**/*', lambda route: route.continue_())

# Pause the page, and start recording manually.
page = context.new_page()
page.pause()