前言
最近有不少同学问到 Playwright 和 Selenium 的区别是什么?
有同学可能之前学过 selenium 了,再学一个 playwright 感觉有些多余,可能之前有项目已经是 selenium 写的了,换成 playwright 需要时间成本,并且可能有未知风险。
也有同学之前可能没学过 selenium ,现在正准备入手一个web 自动化框架,但是对于选择selenium 和 playwright 犹豫不决,因为面试问selenium比较多,可能学了工作中也用不上,仅仅只是应付面试。
不管出于哪种原因,本篇详细分析 2 者的差异
Playwright 和 Selenium 的区别
编号 |
功能 |
Playwright |
Selenium |
哪个更优秀 |
1 |
学习资料 |
相对少 |
多 |
Selenium |
2 |
用户群体 |
出现的比较晚,用户量相对少 |
出现的早,用户量多 |
Selenium |
3 |
支持语言 |
TypeScript、JavaScript、Python、.NET、Java |
C#,Java,Perl,PHP,Python 和Ruby |
Selenium |
4 |
支持浏览器 |
Chromium(包含chrome, msedge)、WebKit 和 Firefox |
IE(7, 8, 9, 10, 11),Firefox,Safari,Google Chrome,Opera,Edge等 |
Selenium |
5 |
跨平台 |
Windows,Linux(只支持Ubuntu部分系统) ,Mac |
Windows,Linux,Mac 都支持 |
Selenium |
6 |
浏览器安装 |
命令行安装 |
自己安装 |
Playwright |
7 |
浏览器驱动 |
不需要驱动 |
下载对应版本驱动 |
Playwright |
8 |
启动速度 |
快 |
慢 |
Playwright |
9 |
context 环境隔离 |
有 |
无 |
Playwright |
10 |
headless 无头模式 |
默认headless, 也可以设置GUI |
默认GUI模式,也可以设置headless |
Playwright |
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 |
18 |
iframe |
通过对象操作,不用切换 |
需要来回切换 |
Playwright |
19 |
alert |
默认监听自动关闭,可以异步监听 |
需要自己判断,无异步监听 |
Playwright |
20 |
文件上传 |
监听文件上传时间,处理优雅 |
无法解决非input 上传 |
Playwright |
21 |
文件下载 |
可以监听下载 |
只能设置浏览器默认位置 |
Playwright |
22 |
多窗口标签 |
可以监听窗口事件,操作方便 |
需要来回切换 |
Playwright |
23 |
事件监听 |
可以监听各种事件 |
无法监听 |
Playwright |
24 |
捕获ajax 请求 |
可以捕获ajax 请求和 返回 |
无法捕获 |
Playwright |
25 |
mock 功能 |
可以模拟想要的任何接口数据 |
无mock 功能 |
Playwright |
26 |
断言 |
提供expect 丰富断言 |
需要自己封装webdriverwait.until方法,难度较大 |
Playwright |
27 |
录制视频 |
录制用例视频 |
无 |
Playwright |
28 |
trace 追踪 |
有 |
无 |
Playwright |
29 |
断点调试 |
有 |
无 |
Playwright |
30 |
录制 |
可以生成pytest用例 |
录制功能比较简单 |
Playwright |
31 |
鼠标键盘操作 |
调用简单方便 |
导入模块,操作复杂 |
Playwright |
32 |
base_url |
可以添加全局base_url |
无此功能 |
Playwright |
33 |
接口测试 |
提供接口测试 |
无此功能 |
Playwright |
34 |
grid 分布式 |
无 |
selenium-grid 分布式 |
Selenium |
35 |
协议 |
websockt 协议,可以实时获取页面状态 |
http 协议,只能获取当时的状态,需自己轮询判断 |
Playwright |
36 |
执行JavaScript |
可以在page,iframe,元素对象执行JavaScript |
只能在driver对象执行JavaScrip |
Playwright |
37 |
async异步 |
有同步和异步2种方式 |
无异步代码 |
Playwright |
38 |
面试 |
要求playwright 比较少 |
问selenium 比较多 |
Selenium |
39 |
学习难易程度 |
容易,无需封装,直接用 |
难度较大,需要封装 |
Playwright |
总体打分selenium 8分, playwright 31 分,如果你是新手,毫不犹豫应该直接学playwright
服务器托管,北京服务器托管,服务器租用 http://www.fwqtg.net
机房租用,北京机房租用,IDC机房托管, http://www.fwqtg.net
博客地址:https://www.cnblogs.com/zylyehuo/ 参考资料 ORB-SLAM3配置及安装教程 ORB-SLAM3配置安装及运行 环境配置 Win 11pro VMware 17Pro Ubuntu 18.04 Eigen3 Pang…