Playwright 和 Selenium 的区别是什么?

目录

前言

Playwright 和 Selenium 的区别


前言

Playwright和Selenium都是用于自动化Web应用程序测试的工具,它们都提供了编程接口,用于模拟用户操作和执行自动化测试脚本。然而,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 分,如果你是新手,毫不犹豫应该直接学playwright

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/34242.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

计算机视觉:多通道卷积操作

本文重点 前面我们学习了对灰度图的卷积操作(二维图像),本节课程我们学习RGB 彩色图像的卷积操作(三维立体)也就是说现在我们不仅想检测灰度图像的特征,也想检测 RGB 彩色图像的特征。 彩色图片的表示方法 彩色图片通常使用RGB(Red、Green、Blue)三个颜色通道来表示…

ChatGPT新功能曝光:可记住用户信息、上传文件和工作区

🦉 AI新闻 🚀 ChatGPT新功能曝光:可记住用户信息、上传文件和工作区 摘要:一张神秘截图曝光了ChatGPT新功能,包括可记住用户信息的"My profile"、上传和管理文件的"My files"以及可以让AI使用不…

与chagpt对话记录

每日chagpt对话记录 关注我一下 vscode 浏览器版本 c 函数 无法跳转 C/C IntelliSense, debugging, and code browsing. C/C IntelliSense、调试和代码浏览是指在使用VS Code进行C/C开发时的一些核心功能。下面是对这些功能的简要说明: IntelliSense(智能…

华为HUAWEI MateBook D 2018 黑苹果Monterey 12.6.5的安装过程

HUAWEI MateBook D 2018 黑苹果系统的安装 HUAWEI MateBook D 2018版,配置列表如下:安装Monterey 12.6.5流程1. 打开balenaEtcher,选择好系统镜像和U盘,将镜像刻录到U盘中,点击Flash等待刻录完成;2. 使用DiskGenius将下…

搜索引擎概念解析

搜索引擎概念解析 什么是搜索引擎 MySQL搜索引擎举例 搜索引擎是一种用于在互联网上搜索并呈现相关信息的工具。它通过自动扫描和索引大量网页内容,并根据用户提供的关键词或查询条件,返回与之相关的网页链接和摘要。 当用户在搜索引擎中输入关键词或…

K8S | 容器和Pod组件

对比软件安装和运行; 一、场景 作为研发人员,通常自己电脑的系统环境都是非常复杂,在个人的习惯上,是按照下图的模块管理电脑的系统环境; 对于「基础设施」、「主机操作系统」、「系统软件」来说,通常只做…

用OpenCV进行透视变换

1. 引言 欢迎回来!今天我们将焦点聚焦在我在图像处理中最喜欢的话题之一——透视变换。使用该技术,可以灵活方便的实现各种各样好玩的特效。 闲话少说,我们直接开始吧! 2. 单应矩阵 我们首先展开对单应矩阵的深入研究。作为图…

手搓GPT系列之 - 通过理解LSTM的反向传播过程,理解LSTM解决梯度消失的原理 - 逐条解释LSTM创始论文全部推导公式,配超多图帮助理解(下篇)

本文承接上篇上篇在此和中篇中篇在此,继续就Sepp Hochreiter 1997年的开山大作 Long Short-term Memory 中APPENDIX A.1和A.2所载的数学推导过程进行详细解读。希望可以帮助大家理解了这个推导过程,进而能顺利理解为什么那几个门的设置可以解决RNN里的梯…

浏览器使用Notification桌面通知消息推送

什么是 Notification? Notification 是浏览器最小化后在桌面显示消息的一种方法类似于 360 等流氓软件在桌面右下角的弹窗广告它与浏览器是脱离的,消息是置顶的 一、弹窗授权 授权当前页面允许通知可以通过检查只读属性 Notification.permission 的值来…

word另存为pdf失败的原因及处理方法

我们知道,Word可以通过另存为方式直接保存为PDF,其原理其实跟打印机打印差不多,PDF就是一台虚拟的打印机,但有些同学反映word另存为pdf失败,可能的原因是什么呢?又该如何处理呢? word另存为pdf…

aliyun-oss-sdk阿里云OSS视频上传(断点续传)前端实现

问题背景 最近上传视频的功能,突然炸了,两年没动的代码,突然不行辽,首次上传成功,后面继续上传就可以,但凡有一次上传失败,再上传文件就不行。 这里博主使用的是凭证上传方式哈。 凭证上传 …

基于Layui实现管理页面

基于Layui实现的后台管理页面(仅前端) 注:这是博主在帮朋友实现的一个简单的系统前端框架(无后端),跟大家分享出来,可以直接将对应菜单跟html文件链接起来,页面使用标签页方式存在&…

SpringBoot2+Vue2实战(九)集成Echarts

Vue下载Echarts npm i echarts -S echarts官网 快速上手 - Handbook - Apache ECharts2 引入: import * as echarts from "echarts" 一、示例 EchartsController RestController RequestMapping("/echarts") public class EchartsContr…

HBase-问题

最终理解HBase数据模型的关键在于稀疏、分布式、多维、排序的映射。其中映射map指代非关系型数据库的key-Value结构。 1.怎么理解稀疏? 不同的行有不同的列,这就叫稀疏 有的行有3个列,有的行有2个列,那么2个列的在显示的时候&a…

Spring 项目过程及如何使用 Spring

文章目录 1.创建 Spring 项目步骤1.1 创建 Maven 项目1.2添加 Spring 框架支持1.3 添加启动项2.如何使用 Spring2.1 存储 Bean 对象2.1.1 创建 Bean对象2.1.2 将 Bean对象注册到容器中 2.2 获取并使用 Bean对象2.2.1 使用 ApplicationContext 获取对象2.2.2 使用 BeanFactory 获…

四、构建高可用的 Eureka-Server 集群

5.1 对刚才的 eureka-server 修改配置文件 5.1.1 server-1 server:port: 8761 #为什么是 8761,其他端口就报错spring:application:name: eureka-server #服务名称eureka:client:fetch-registry: true #是否拉取服务列表register-with-eureka: true #是否注册自己&…

matlab将数据写入到excel中

第一种: 将数据转化为cell块,从A1单元格写起 % xlswrite(info_10*2.xls ,sheet1,B2:B4) clear; clc; a[1 2 3 4 5 6 ];%三组数据 b[11 22 33 44 55 66]; c[12 23 34 45 56 61]; data [a b c];%把数据保存到data中,其中a的表示转置 [m p]si…

LED显示屏四大连接方式

LED显示屏的四大连接方式是数据连接、电源连接、信号输入连接和控制系统连接。以下是对每种连接方式的详细说明: 1,数据连接: 数据连接用于传输显示内容的数据信号到LED显示屏。常见的数据连接方式包括: 串行连接(Serial Connecti…

DevOps实现自动化发布实操

DevOps实现自动化发布流程 本篇文章来自 B站视频(部分步骤与视频存在差异) 流程图及原理 本地编写代码提交至远程仓库Jenkins(基于Docker)通过内置Git获取提交的代码,通过Maven进行打包,形成可执行文件&a…

苹果app用发布证书打包后怎么装手机测试

一、背景 iOS 的开发证书打包后可以通过爱思助手安装到手机上测试,但发布 (Production) 证书是不允许安装在手机上的。而在实际开发过程中,尽管通过开发证书测试过了,iOS生产包仍然可能会出现一些问题,需对生产包也进行测试。 而…