Playwright for Python入门指南——测试生成器

自动化测试 · 2023-06-29

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 选项来模拟时区、语言和位置,从而录制脚本和测试用例。页面打开后:

  1. 接受 cookies。
  2. 在右上角点击“定位我”按钮,以查看地理位置的效果。
playwright codegen --timezone="Europe/Rome"  --geolocation="41.890221,12.492348"  --lang="it-IT" bing.com/maps  

保持已验证状态

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

playwright codegen github.com/microsoft/playwright --save-storage=auth.json  

登录

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

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

加载已验证状态

使用 --load-storage 运行,以使用 auth.json 中先前加载的存储。这样,所有的cookieslocalStorage都将恢复,将大多数 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()    

Playwright
Theme Jasmine by Kent Liao