测试生成器
简介
Playwright 允许您在浏览器中执行操作时生成测试,这是快速开始测试的好方法。Playwright 会查看您的页面并找出最佳定位器,优先考虑 角色、文本和测试 ID 定位器。如果生成器找到多个与定位器匹配的元素,它将改进定位器以使其具有弹性,从而唯一地识别目标元素。
使用 Playwright 检查器生成测试
运行 codegen
命令时,将打开两个窗口:一个浏览器窗口,您可以在其中与要测试的网站进行交互,以及 Playwright 检查器窗口,您可以在其中记录测试,然后将它们复制到您的编辑器中。
运行 Codegen
使用 codegen
命令运行测试生成器,后跟要为其生成测试的网站的 URL。URL 可选,您可以始终在没有它的情况下运行命令,然后将 URL 直接添加到浏览器窗口中。
playwright codegen demo.playwright.dev/todomvc
录制测试
运行 codegen
命令并在浏览器窗口中执行操作。Playwright 将生成用户交互的代码,您可以在 Playwright 检查器窗口中看到。完成录制测试后,停止录制并按下“**复制**”按钮将生成的测试复制到您的编辑器中。
使用测试生成器,您可以录制以下内容
- 通过简单地与页面交互来执行点击或填充等操作
- 通过单击工具栏中的一个图标,然后单击页面上的一个元素来断言该元素。您可以选择
'断言可见性'
来断言元素可见'断言文本'
来断言元素包含特定文本'断言值'
来断言元素具有特定值
完成与页面的交互后,按下“**录制**”按钮停止录制,并使用“**复制**”按钮将生成的代码复制到您的编辑器中。
使用“**清除**”按钮清除代码以再次开始录制。完成后,关闭 Playwright 检查器窗口或停止终端命令。
生成定位器
您可以使用测试生成器生成 定位器。
- 按下“**录制**”按钮停止录制,然后“**选择定位器**”按钮将出现。
- 单击“**选择定位器**”按钮,然后将鼠标悬停在浏览器窗口中的元素上,以查看每个元素下方突出显示的定位器。
- 要选择一个定位器,请单击要定位的元素,该元素的代码将出现在“选择定位器”按钮旁边的字段中。
- 然后,您可以在此字段中编辑定位器以对其进行微调,或使用“复制”按钮将其复制并粘贴到您的代码中。
模拟
您可以使用测试生成器使用模拟来生成测试,以便为特定视窗、设备、配色方案生成测试,以及模拟地理位置、语言或时区。测试生成器还可以在保留经过身份验证的状态的同时生成测试。
模拟视窗大小
Playwright 以特定宽度和高度打开浏览器窗口,并且没有响应性,因为测试需要在相同条件下运行。使用 --viewport
选项以不同视窗大小生成测试。
playwright codegen --viewport-size=800,600 playwright.dev
模拟设备
使用 --device
选项录制脚本和测试,同时模拟移动设备,该选项会设置视窗大小和用户代理等。
playwright codegen --device="iPhone 13" playwright.dev
模拟配色方案
使用 --color-scheme
选项录制脚本和测试,同时模拟配色方案。
playwright codegen --color-scheme=dark playwright.dev
模拟地理位置、语言和时区
使用 --timezone
、--geolocation
和 --lang
选项录制脚本和测试,同时模拟时区、语言和位置。页面打开后
- 接受 Cookie
- 在右上角,单击“定位我”按钮以查看地理位置的实际效果。
playwright codegen --timezone="Europe/Rome" --geolocation="41.890221,12.492348" --lang="it-IT" bing.com/maps
保留经过身份验证的状态
使用 --save-storage
运行 codegen
以在会话结束时保存 Cookie 和 localStorage。这对于单独录制身份验证步骤并在以后录制更多测试时重复使用它很有用。
playwright codegen github.com/microsoft/playwright --save-storage=auth.json
登录
执行身份验证并关闭浏览器后,auth.json
将包含存储状态,您可以随后在测试中重复使用。
确保仅在本地使用 auth.json
,因为它包含敏感信息。将其添加到您的 .gitignore
中,或者在完成生成测试后将其删除。
加载经过身份验证的状态
使用 --load-storage
运行,以使用先前从 auth.json
加载的存储。这样,所有 Cookie 和 localStorage 都将被还原,将大多数 Web 应用程序带到经过身份验证的状态,而无需再次登录。这意味着您可以从已登录的状态继续生成测试。
playwright codegen --load-storage=auth.json github.com/microsoft/playwright
使用自定义设置录制
如果您想在某些非标准设置中使用 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()
import asyncio
from playwright.async_api import async_playwright
async def main():
async with async_playwright() as p:
# Make sure to run headed.
browser = await p.chromium.launch(headless=False)
# Setup context however you like.
context = await browser.new_context() # Pass any options
await context.route('**/*', lambda route: route.continue_())
# Pause the page, and start recording manually.
page = await context.new_page()
await page.pause()
asyncio.run(main())