Skip to main content

测试生成器

Playwright 具有开箱即用的生成测试的能力,这是快速开始测试的好方法。它将打开两个窗口,一个浏览器窗口,您可以在其中与要测试的网站进行交互,另一个是 Playwright Inspector 窗口,您可以在其中录制测试、复制测试、清除测试以及更改测试语言。

运行 Codegen

playwright codegen demo.playwright.dev/todomvc

运行 codegen 并在浏览器中执行操作。Playwright 将为用户交互生成代码。Codegen 将尝试生成弹性的基于文本的选择器。

模拟视口大小

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

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

模拟设备

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

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

模拟配色方案

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

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

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

使用 --timezone--geolocation--lang 选项模拟时区、语言和位置录制脚本和测试。页面打开后,点击地图右下角的"显示您的位置"图标以查看地理位置的实际效果。

playwright codegen --timezone="Europe/Rome" --geolocation="41.890221,12.492348" --lang="it-IT" maps.google.com
Codegen generating code for tests for google maps showing timezone, geoloation as Rome, Italy and in Italian language

保留认证状态

使用 --save-storage 运行 codegen 以在会话结束时保存 cookieslocalStorage。这对于单独记录身份验证步骤并在以后的测试中重用它非常有用。

执行身份验证并关闭浏览器后,auth.json 将包含存储状态。

playwright codegen --save-storage=auth.json
Screenshot 2022-08-03 at 13 28 02

使用 --load-storage 运行以使用以前加载的存储。这样,所有 cookieslocalStorage 都将恢复,使大多数 Web 应用程序进入已验证状态,而无需再次登录。

playwright codegen --load-storage=auth.json github.com/microsoft/playwright
Screenshot 2022-08-03 at 13 33 40

使用带有 --load-storageopen 命令打开保存的 auth.json

playwright open --load-storage=auth.json github.com/microsoft/playwright

使用自定义设置录制

如果您想在某些非标准设置中使用 codegen(例如,使用 browser_context.route(url, handler, **kwargs)),可以调用 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()