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 窗口中查看。录制测试用例完成后,停止录制并点击复制按钮将生成的测试用例复制到编辑器中。
生成定位器
您可以使用测试用例生成器生成定位器。
- 点击
'Record'
按钮停止录制,然后将出现'Pick Locator'
按钮。 - 点击
'Pick Locator'
按钮,然后在浏览器窗口上悬停在元素上,您将看到定位器在每个元素下方突出显示。 - 要选择定位器,请点击要定位的元素,该定位器的代码将出现在“Pick Locator”按钮旁边的字段中。
- 您可以在此字段中编辑定位器以微调它,或使用复制按钮复制并粘贴到您的代码中。
仿真
您可以使用测试用例生成器来生成使用仿真的测试,以便为特定的视口、设备、颜色方案生成测试,并模拟地理位置、语言或时区。测试生成器还可以在保持已验证状态的同时生成测试。
模拟窗口大小
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
选项来模拟时区、语言和位置,从而录制脚本和测试用例。页面打开后:
- 接受 cookies。
- 在右上角点击“定位我”按钮,以查看地理位置的效果。
playwright codegen --timezone="Europe/Rome" --geolocation="41.890221,12.492348" --lang="it-IT" bing.com/maps
保持已验证状态
在会话结束时,使用 --save-storage
运行 codegen
,以保存cookies和localStorage。这对于单独记录验证步骤并在以后记录更多测试时重用它非常有用。
playwright codegen github.com/microsoft/playwright --save-storage=auth.json
登录
在执行验证并关闭浏览器之后,auth.json
将包含存储状态,您可以在测试中重复使用它。
确保仅在本地使用 auth.json
,因为其中包含敏感信息。将其添加到您的 .gitignore
文件中,或在生成测试后删除它。
加载已验证状态
使用 --load-storage
运行,以使用 auth.json
中先前加载的存储。这样,所有的cookies和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:
browser = p.chromium.launch(headless=False)
context = browser.new_context()
context.route('**/*', lambda route, request: route.continue_)
page = context.new_page()
page.pause()