软件测试学习笔记丨Playwright测试框架

编程有点难不难 2024-08-15 11:17:16

本文转自测试人社区,原文链接:

一、playwright简介1.1 playwright定义Web自动化测试框架;支持跨平台多语言;支持Chrome、FireFox、Webkit等主流浏览器自动化操作。1.2 playwright优点支持所有流行的浏览器;速度更快、执行更可靠;更强大的自动化测试配置;强大的工具库:Codegen、Playwright inspector、Trace Viewer。1.3 playwright原理scale 1000participant 编程语言 as pparticipant Playwright as playwrightparticipant puppeteer participant 浏览器 as browserp -> playwright: 编程语言调用playwright库playwright -> puppeteer: 调用 puppeteer 工具puppeteer <-> browser: 通过 Chrome DevTools 协议(基于Websocket),调用浏览器二、playwright与selenium对比

项目

playwright

selenium

是否需要驱动

需要对应浏览器WebDriver

支持语言

Java,Python,JavaScript

Java,Python,Ruby,JavaScript,C#等

支持浏览器

Chrome,FireFox等

Chrome、FireFox等

通讯方式

websocket双向通讯协议

http单向通讯协议

使用的测试框架

无限制(pytest,unittest)

无限制(pytest,unittest)

测试速度

录制测试视频、快照

支持

支持

社区支持

微软

ThoughtWorks公司

三、playwright核心工具Codegen:通过记录用户的操作来生成测试,将它们保存为任何语言;playwright inspector:检查页面、生成选择器、逐步执行测试、查看点击点、探索执行日志;Trace Viewer:捕获所有信息,以调查测试失败。playwright跟踪包含测试执行截屏、实时DOM快照、动作资源管理器、测试源等等。三、playwright环境安装安装playwright插件:pip install pytest-playwright安装所需的浏览器:playwright install四、Codegen4.1 用法# 设定展示窗口大小playwright codegen --viewport-size=800,600 地址# 指定设备playwright codegen --device="iPhone 11" 地址4.2 保存登录状态场景:单点登录、验证码问题# 保存登录状态playwright codegen --save-storage=auth.json# 加载认证信息playwright codegen --load-storage=auth.json 地址五、playwright常用API

常用API

含义

start()

实例化playwright

chromium().launch()

打开chrome浏览器

new_page()

打开一个窗口页面

page.goto()

跳转到某个地址

page.locator(““)

定位某个元素

click()

点击元素

fill()

输入内容

keyboard().down()

键盘事件

screenshot()

截图操作

六、playwright使用实例from playwright.sync_api import sync_playwright, expectdef test_playwright(): # 实例化playwright playwright = sync_playwright().start() # 打开chrome浏览器,headless默认是True,无头模式,这里设置为False方便查看效果 browser = playwright.chromium.launch(headless=False) # 打开一个窗口页面 page = browser.new_page() # 在当前窗口页面打开测试人网站 page.goto("https://ceshiren.com/") # 定位搜索按钮并点击 page.locator("#search-button").click() # 定位搜索框并输入web自动化 page.locator("#search-term").fill("web自动化") # 使用keyboard.down模拟键盘的enter事件 page.keyboard.down("Enter") # 断言搜索结果 result = page.locator(".list>li:nth-child(1) .topic-title>span") expect(result).to_contain_text("自动化测试") # 截图 page.screenshot(path='screenshot.png') # 用例完成后先关闭浏览器 browser.close() # 然后关闭playwright服务 playwright.stop()七、Trace Viewer7.1 简介

7.2 使用# trace 在代码中的配置browser = chromium.launch()# 实例化一个新的contextcontext = browser.new_context()# 设置trace的参数信息context.tracing.start(screenshots=True, snapshots=True, sources=True)# 使用context生成的page实例进行对应的操作page = context.new_page()# 结束追踪context.tracing.stop(path = "trace.zip")# 打开traceplaywright show-trace trace.zip

0 阅读:1

编程有点难不难

简介:感谢大家的关注