前言

最近有不少同学问到 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

总结:

Playwright的优点是简单方便、功能强大、稳定性高,缺点是相对新,用户群体少,学习资料少。
Selenium的优点是灵活性高、用户群体大、学习资料多,缺点是需要自己封装或者导入其他模块来实现一些功能,启动速度慢,稳定性差。

总体打分selenium 8分, playwright 31 分,如果你是新手,毫不犹豫应该直接学playwright

本文转自:https://www.cnblogs.com/yoyoketang/p/17387733.html