自动化潮流框架——Playwright 大解密!

一说到自动化测试,第一个反应估计就是Python+selenium这样的一个组合,其实在2020年的时候市面上就出现了另一个由微软发布的一款UI自动化测试工具,叫Playwright。经过几年的迭代和技术的沉淀,该工具受到越来越多的人重视和青睐。

Best of JS 网站曾经做过一个关于各个测试框架在 GitHub 新增的 star 数量的统计Playwright位于榜首位置,其受欢迎的程度可见一斑。

图片

Playwright凭借自身的优势和近几年的迭代,在自动化测试领域开始崭露头角,使用场景也越来越多。

图片

肯定有人好奇Playwright和selenium区别:

Playwright架构

图片

client:在客户端是我们用不同的编程语言编写的代码,如JavaScript,Java,Python,C#等。

server:Playwright的server通过nodejs构建并负责与client 以及不同的 Web 浏览器引擎进行通信。

通信协议:client通过WebSocket 协议与Playwright server 通信;

Playwright使用 Chrome DevTools 协议(CDP)与 Chromium 通信。对于Firefox和WebKit,Playwright 实现了自己的协议,类似于CDP。一旦触发测试,client端代码将被转换为JSON格式,然后使用websocket协议发送到服务器。

Playwright通过单个 websocket 协议连接传达所有请求,该连接将保持不变,直到所有测试执行完成。由于命令是在单个连接上发送的,因此测试失败或不稳定的可能性较小,并且命令可以快速执行。这种架构与Selenium相反,Selenium使用HTTP连接协议,并将每个命令(如浏览器打开,单击,发送密钥或关闭浏览器)作为单独的HTTP请求发送。

此外,在Selenium中,服务器和客户端之间的连接将在每次请求后终止,并为下一个请求重新建立。最后划重点:这就是Playwright比selenium快的原因

Selenium架构

图片

蓝色图中的Selenium Language Binding就是我们平时使用的编码语言,包括java、python等等。可以看到这些语言并没有直接与Browser Drivers进行通信,而是通过了JSON WireProtocol,这就是webdriver协议,然后通过webdriver协议在与各个浏览器的driver进行通信,最后各个浏览器的driver与其对应的浏览器进行通信。

这里我们以chromedriver为例进行讲解,他负责与chrome浏览器进行通信。我们在代码中直接 newChromeDriver() 将会启动一个 ChromeDriver进程,ChromeDriver是一个独立的服务,它是google为网站开发人员提供的自动化测试接口,是 selenium 和chrome浏览器进行通信的桥梁。

chromeDriver解析webdriver协议,然后根据解析结果,调用与之对应的Chrome DevTool Protocol(CDP)协议来操控chrome浏览器,它可以和浏览器内核进行交互进而操控浏览器,这里就不对该协议进行详细介绍了。

另外,其他浏览器的dirver与其对应浏览器的通信原理与ChromeDriver类似

总的来说: Playwright启动速度比较快,拥有更多的定位方式,不需要安装驱动,能够在多个平台上运行,提供录制功能实现录制用例视屏,学习上来说Playwright也比较容易,无需封装直接使用.

那么这么强大的工具,我们松勤课程当然不能少啦,在即将升级的自动化测试课程里面就覆盖这个工具的使用,具体大纲如下:

图片

 

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

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

相关文章

印度神体系与编程思维

印度神体系中存在三大主神:至高神梵天、毗湿奴以及湿婆。 1.神的类型抽象与神性优先级: 每一个神都掌握着世间中所存在的规律,比如天界里因陀罗(帝释天)等神掌控风火水电。换句话说,每一个可以抽象出来的世…

5-规范设计(下):commit信息风格迥异、难以阅读,如何规范?

我们在做代码开发时,经常需要提交代码,提交代码时需要填写 Commit Message(提交说明),否则就不允许提交。 所以在 Go 项目开发时,一个好的 Commit Message 至关重要: 可以使自己或者其他开发人…

U盘文件突然消失?原因与恢复策略全解析

一、遭遇不测:U盘文件突然消失 在日常生活和工作中,U盘扮演着不可或缺的角色,它小巧便捷,能够随时随地存储和传输文件。然而,有时我们会遭遇一个令人头疼的问题:U盘中的文件突然消失。这种突如其来的变故往…

Oracle利用BBED恢复崩溃实例(ORA-01092,ORA-00704,ORA-01578)

BBED修复数据损坏引起的数据库崩溃(ORA-01092,ORA-00704,ORA-01578)(2021年某苏州国企的案例) 1.Symptom 用户一个边缘系统出现数据文件损坏,且没有备份,数据库无法启动 报错如下,发现是oracle bootstra…

redis集群配置(精华版):主从复制模式

主从复制模式 概念:作用:为什么使用集群:动手实操1、环境准备2、配置redis.conf配置文件3、再次查看主从节点信息4、验证主从模式 概念: ​ 主从复制,是指将一台Redis服务器的数据,复制到其他的Redis服务器…

29 超级数据查看器 APP视频教程 查询复用

29 超级数据查看器 APP视频教程 查询复用 超级数据查看器 查询复用 最下方有 讲解稿全文 有兴趣的朋友可以看看 超级数据查看器是安卓手机上的APP,软件。 具有导入excel表格数据,存入手机内置的数据库,生成查询模块,快速查询数…

缓存和缓存的常用使用场景

想象一下,一家公司在芬兰 Google Cloud 数据中心的服务器上托管一个网站。对于欧洲用户来说,加载可能需要大约 100 毫秒,但对于墨西哥用户来说,加载需要 3-5 秒。幸运的是,有一些策略可以最大限度地减少远程用户的请求延迟。 这些策略称为缓存和内容交付网络 (CDN),它们是…

线程同步+理解生产者消费者模型

1.线程同步的概念 下面我们来谈一个故事理解线程同步的概念:假设学校里面有一个环境非常好的超级vip自习室是公共的,但是有个前提,一次只能进去一个学生,因为只有一把钥匙挂在超级vip自习室门外的墙上的。假设你是一个学习成绩比…

SuccessFactors 如何通过页面查询后台对应的表

一直以来都习惯SAP的查表方式,一直在想sf能在前台查询表是哪个,今天测试fiori的发现有一个debug工具很好,就是浏览器的F12功能。

hdfs操作java API

1.Configuration类——cof对象 (1)创建 Configuration conf new Configuration(); conf.set("fs.defaultFS", "hdfs://localhost:9000"); conf.set("fs.hdfs.impl", "org.apache.hadoop.hdfs.DistributedFileSys…

GIMP - GNU 图像处理程序 - 工具栏窗口 (Toolbox) 显示

GIMP - GNU 图像处理程序 - 工具栏窗口 [Toolbox] 显示 1. File -> Open2. GIMP 主面板里,右击弹出菜单 -> Tools -> New Toolbox3. Windows -> Dockable Dialogs -> Tool Options4. 工具选项拖动到工具箱里面5. Always On TopReferences GIMP 是跨平…

MySQL的InnoDB引擎的事务原理以及MVCC

目录 一、事务原理 二、redo log 三、undo log 四、MVCC 1.基础概念 2.隐藏字段 3.undolog 4.readview 5.原理分析 一、事务原理 1). 事务 事务 是一组操作的集合,它是一个不可分割的工作单位,事务会把所有的操作作为一个整体一起向系统提交或撤销操作…

163.乐理基础-自然小调、音名为何从C开始

如果到这五线谱还没记住还不认识的话去看102.五线谱-高音谱号与103.五线谱-低音谱号这两个里,这里面有五线谱对应的音名,对比着看 如果一章没落下,看到这里,但是看不懂什么意思,那就强行下看,看着看着指不…

UE4_碰撞_射线检测不到物体原因及跳不到圈内的问题

UseSimpleAsComplex 和 UseComplexAsSimple 标记的作用和使用时间。 虚幻引擎 4 中有简单和复杂碰撞形态。 简单碰撞 是基础,如盒体、 球体、胶囊体和凸包。 复杂碰撞 是给定对象的三角网格图。 虚幻引擎 4 会默认创建简单和复杂两种形态,然后基于用户需…

某互联网公司研发人员绩效考核项目成功案例纪实

——产品不确定性强,如何考核研发人员 【行业】互联网行业;高新科技研发行业 【关键词】绩效考核;研发人员;考核指标 M公司是一家定位在高端家用智能设备研发制造的互联网公司,成立于2015年,现有研发人员…

基于springboot实现网页时装购物系统项目【项目源码+论文说明】

基于springboot实现时装购物系统演示 摘要 随着科学技术的飞速发展,社会的方方面面、各行各业都在努力与现代的先进技术接轨,通过科技手段来提高自身的优势,时装购物系统当然也不能排除在外。时装购物系统是以实际运用为开发背景&#xff0c…

Leetcode 剑指 Offer II 071.按权重随机选择

题目难度: 中等 原题链接 今天继续更新 Leetcode 的剑指 Offer(专项突击版)系列, 大家在公众号 算法精选 里回复 剑指offer2 就能看到该系列当前连载的所有文章了, 记得关注哦~ 题目描述 给定一个正整数数组 w ,其中 w[i] 代表下标 i 的权重…

浅谈Spring体系的理解

浅谈Spring知识体系 Spring Framework架构图Spring家族技术生态全景图XMind汇总 本文不涉及细节,主要回答两个问题: Spring家族技术生态全景图有哪些Spring Framework架构下每个模块有哪些东西,以及部分模块之间的关联关系 Spring Framework架…

NC269391 炸鸡块哥哥的粉丝题

题目描述 智乃作为炸鸡块哥哥的粉丝,做了一场炸鸡块哥哥的比赛后得出一个结论,那就是炸鸡块哥哥的话,最多只能信半句。 现在给你一个长度为N的字符串S,请输出前 个字符,表示只能相信半句话。 例如当炸鸡块哥哥说&…