写在前面
说起与playwright的第一次相遇,那必须得安利一个公众号:《CKL的思考空间》
playwright相关文章,还是今年1月份在公众号中第一次看到,当时还没去深入探究。最近项目出了个小问题,手工测试web页面时将一个UI问题漏到了生产上。
为了解决这个问题,也为了之后能快速验证页面变动,就决定探索下playwright的功能,看看是不是可以更加方便快捷的解决问题。
下面开启探索之路~~~
Playwright是个啥?
Playwright 是由 Microsoft 开发的一款端到端的测试工具,首次开源于 2020 年 1 月。
它允许开发者对 Web 应用进行UI自动化测试,其功能类似与selenium,但它支持多种现代 Web 浏览器。
Playwright 是跨平台的,能够在 Windows、Linux 和 macOS 上运行,提供了一个高级的 API 用于创建浏览器自动化脚本。
Playwright 支持JavaScript / TypeScript、Python、Java、.net等多种语言。
官网地址:https://playwright.dev/python/
Playwright能做啥?
1. Playwright可以更加方便快捷的进行端到端测试;
2. Playwright可以实现跨浏览器测试,包括 Chromium(Chrome、Edge)、Firefox 和 WebKit(Safari),覆盖更广范围的用户场景;
3. Playwright可以像selenium一样结合测试框架(如pytest,junit等),实现自动化测试;
4. Playwright可以用来查找分析在不同的浏览器下的性能,查找性能瓶颈;
5. Playwright可以用来模拟移动设备,进行移动端的web网页测试,功能类似开发者工具中的设备工具栏;
6. 由于Playwright是直接操作浏览器内核的,可以更加方便的模拟各种浏览器行为,因此也可以用来做爬虫等(感兴趣的小伙伴请自行研究)。
Playwright为啥🔥?
探究这个问题,就不得不拿出selenium来做个对比了,selenium作为同样优秀的一款UI自动化工具,Playwright为啥能和它PK?经过了解后,总结一下几点:
安装配置
selenium除了需要安装本身的插件外,还需要安装与被操作浏览器版本相匹配的驱动(比如装了122.0.6261.129版本的chrome浏览器,那就必须装对应版本的chromnium,如果版本不一致,可能会出现各种奇奇怪怪的问题),但是playwright自身就封装了多个浏览器的内核,包括Chrome、Firefox和WebKit(Safari)等,不需要额外考虑环境匹配问题,完美~
操作原理
selenium 通过webdriver API 对浏览器本身进行操作,playwright 则是通过websocket与浏览器内核保持一个长链接,然后直接操作内核
执行效率
selenium 是通过操作浏览器本身工作的,格外依赖浏览器和驱动的版本,另外,selenium必须要等待当前步骤执行完毕,才能继续下一步的执行,是同步行为,所以selenium执行的效率会比较低;playwright 则是直接操作浏览器的API,不依赖浏览器本身,而且提供了同步和异步两种API形式,因此,playwright会高于selenium,尤其是在运行大规模测试时,更为明显
程序语法
selenium 的元素定位方式较为灵活(还记得八大元素定位吗......),但相对比较复杂,playwright则对元素定位进行了高度封装,语法更为简洁明了(后续会出一些demo作为比较)
文档支持
selenium 作为老牌自动化工具,其社区和文档支持较为丰富,playwright 作为后起之秀,还在发展中
文末总结
selenium和 playwright 都是流行的自动化测试工具,都拥有丰富的功能和API,都支持多浏览器,但是 playwright 解决了selenium存在的诸多痛点,如:安装配置繁琐、执行效率偏低、不支持异步操作、语法较为复杂等问题,因此 playwright 在开源后,迅速占领了诸多测试团队的心。
当然,它们的使用场景还是有所区别的,各位测试之星可以根据实际项目不同的需求和场景,自行选择合适的自动化测试工具来进行测试。
最后,在安利一个大佬的B站视频,供大家一起学习:山豆根行者的个人空间-山豆根行者个人主页-哔哩哔哩视频