当前位置: 首页 > news >正文

Playwright 和 Selenium的对比

前言

最近有不少同学问到 Playwright 和 Selenium 的区别是什么?
有同学可能之前学过 selenium 了,再学一个 playwright 感觉有些多余,可能之前有项目已经是 selenium 写的了,换成 playwright 需要时间成本,并且可能有未知风险。
也有同学之前可能没学过 selenium ,现在正准备入手一个web 自动化框架,但是对于选择selenium 和 playwright 犹豫不决,因为面试问selenium比较多,可能学了工作中也用不上,仅仅只是应付面试。
不管出于哪种原因,本篇详细分析 2 者的差异

Playwright 和 Selenium 的区别

编号功能PlaywrightSelenium哪个更优秀
1学习资料相对少Selenium
2用户群体出现的比较晚,用户量相对少出现的早,用户量多Selenium
3支持语言TypeScript、JavaScript、Python、.NET、JavaC#,Java,Perl,PHP,Python 和RubySelenium
4支持浏览器Chromium(包含chrome, msedge)、WebKit 和 FirefoxIE(7, 8, 9, 10, 11),Firefox,Safari,Google Chrome,Opera,Edge等Selenium
5跨平台Windows,Linux(只支持Ubuntu部分系统) ,MacWindows,Linux,Mac 都支持Selenium
6浏览器安装命令行安装自己安装Playwright
7浏览器驱动不需要驱动下载对应版本驱动Playwright
8启动速度Playwright
9context 环境隔离Playwright
10headless 无头模式默认headless, 也可以设置GUI默认GUI模式,也可以设置headlessPlaywright
11无痕模式默认无痕模式,对应测试很有帮助,对于爬虫用户可能访问页面不通过默认非无痕默认,爬虫用户特别喜欢Selenium
12页面等待wait_for_load_state可以精准等待commit,domcontentloaded,load,networkidle四种状态implicitly_wait等待页面加载完成Playwright
13元素定位提供多个内置定位器,定位方式更贴近业务,定位方式更多八大定位Playwright
14元素等待定位元素自带等待机制需要自己封装等待方法Playwright
15点击元素等操作会判断元素状态,出现位置,是否可点击智能判断需要自己封装webdriverwait.until方法,难度较大Playwright
16定位报错会人性化告诉你定位到几个元素,并推荐定位方式报错需要自己去猜谜,自己排除各种可能性Playwright
17元素不在当前屏幕会判断元素位置,自动滚动元素出现位置需要自己去判断滚动Playwright
18iframe通过对象操作,不用切换需要来回切换Playwright
19alert默认监听自动关闭,可以异步监听需要自己判断,无异步监听Playwright
20文件上传监听文件上传时间,处理优雅无法解决非input 上传Playwright
21文件下载可以监听下载只能设置浏览器默认位置Playwright
22多窗口标签可以监听窗口事件,操作方便需要来回切换Playwright
23事件监听可以监听各种事件无法监听Playwright
24捕获ajax 请求可以捕获ajax 请求和 返回无法捕获Playwright
25mock 功能可以模拟想要的任何接口数据无mock 功能Playwright
26断言提供expect 丰富断言需要自己封装webdriverwait.until方法,难度较大Playwright
27录制视频录制用例视频Playwright
28trace 追踪Playwright
29断点调试Playwright
30录制可以生成pytest用例录制功能比较简单Playwright
31鼠标键盘操作调用简单方便导入模块,操作复杂Playwright
32base_url可以添加全局base_url无此功能Playwright
33接口测试提供接口测试无此功能Playwright
34grid 分布式selenium-grid 分布式Selenium
35协议websockt 协议,可以实时获取页面状态http 协议,只能获取当时的状态,需自己轮询判断Playwright
36执行JavaScript可以在page,iframe,元素对象执行JavaScript只能在driver对象执行JavaScripPlaywright
37面试要求playwright 比较少问selenium 比较多Selenium
38学习难易程度容易,无需封装,直接用难度较大,需要封装Playwright

总体打分Selenium 8分, Playwright 30 分。

 

总结:

感谢每一个认真阅读我文章的人!!!

作为一位过来人也是希望大家少走一些弯路,如果你不想再体验一次学习时找不到资料,没人解答问题,坚持几天便放弃的感受的话,在这里我给大家分享一些自动化测试的学习资源,希望能给你前进的路上带来帮助。

软件测试面试文档

我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

 

          视频文档获取方式:
这份文档和视频资料,对于想从事【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!以上均可以分享,点下方小卡片即可自行领取。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 7.认识进程
  • 积分第二中值定理的证明
  • 结构开发笔记(七):solidworks软件(六):装配摄像头、摄像头座以及螺丝,完成摄像头结构示意图
  • 智慧赋能,铸就国防工业新辉煌-程易科技助力某军工企业数字化转型纪实
  • 【区块链通用服务平台及组件】微言科技数据智能中台
  • 一个成熟的软件测试工程师应该具备那些“技能”
  • 探索Python的隐秘角落:Keylogger库的神秘面纱
  • MYSQL的结构及常用语句
  • 使用jackson将json转换为对象时,自定义转换字段内容
  • 简单计算机网络概念
  • 与 D3.js 的对比:ECharts 在前端可视化中的优势与劣势
  • 数据库类型有哪些?
  • C++ Windwos 文件操作
  • 从0开始搭建自动化测试平台,构建自动化测试平台的最全指南!
  • 低代码开发技术在农村现代化中的应用探索
  • (三)从jvm层面了解线程的启动和停止
  • Flex布局到底解决了什么问题
  • HTTP传输编码增加了传输量,只为解决这一个问题 | 实用 HTTP
  • JavaScript设计模式系列一:工厂模式
  • jquery cookie
  • Quartz实现数据同步 | 从0开始构建SpringCloud微服务(3)
  • spark本地环境的搭建到运行第一个spark程序
  • Yii源码解读-服务定位器(Service Locator)
  • 从 Android Sample ApiDemos 中学习 android.animation API 的用法
  • 搭建gitbook 和 访问权限认证
  • 多线程事务回滚
  • 基于axios的vue插件,让http请求更简单
  • 七牛云假注销小指南
  • 如何设计一个微型分布式架构?
  • ​创新驱动,边缘计算领袖:亚马逊云科技海外服务器服务再进化
  • $(document).ready(function(){}), $().ready(function(){})和$(function(){})三者区别
  • (03)光刻——半导体电路的绘制
  • (1/2)敏捷实践指南 Agile Practice Guide ([美] Project Management institute 著)
  • (4)(4.6) Triducer
  • (k8s)Kubernetes 从0到1容器编排之旅
  • (Spark3.2.0)Spark SQL 初探: 使用大数据分析2000万KF数据
  • (附源码)springboot宠物管理系统 毕业设计 121654
  • (经验分享)作为一名普通本科计算机专业学生,我大学四年到底走了多少弯路
  • (理论篇)httpmoudle和httphandler一览
  • (每日一问)操作系统:常见的 Linux 指令详解
  • (四)Android布局类型(线性布局LinearLayout)
  • (五)c52学习之旅-静态数码管
  • (一)80c52学习之旅-起始篇
  • . Flume面试题
  • .htaccess配置重写url引擎
  • .net 程序发生了一个不可捕获的异常
  • .NET 的程序集加载上下文
  • .net(C#)中String.Format如何使用
  • .NetCore实践篇:分布式监控Zipkin持久化之殇
  • .NET下的多线程编程—1-线程机制概述
  • /etc/skel 目录作用
  • @NestedConfigurationProperty 注解用法
  • [2016.7.test1] T2 偷天换日 [codevs 1163 访问艺术馆(类似)]
  • [Android实例] 保持屏幕长亮的两种方法 [转]
  • [C#] 基于 yield 语句的迭代器逻辑懒执行