首页 > 其他分享 >干货!Playwright架构与Selenium 架构对比

干货!Playwright架构与Selenium 架构对比

时间:2023-09-27 10:38:43浏览次数:36  
标签:协议 Playwright 浏览器 Selenium 通信 架构




干货!Playwright架构与Selenium 架构对比_selenium


在 Web 测试自动化方面,Selenium 多年来一直是行业的主导工具。但是,市场上还有许多其他自动化测试工具。Playwright是一种较新的工具,已经越来越受欢迎。网上有很多文章对二者进行对比,今天我从二者的架构角度进行一下对比分析!关于二者在其他方面的区别,我会在后面的文章中持续更新,也欢迎大家关注。

Selenium 架构


干货!Playwright架构与Selenium 架构对比_chrome浏览器_02


蓝色图中的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架构与Selenium 架构对比_Powered by 金山文档_03


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协议发送到服务器。palywright通过单个 websocket 协议连接传达所有请求,该连接将保持不变,直到所有测试执行完成。由于命令是在单个连接上发送的,因此测试失败或不稳定的可能性较小,并且命令可以快速执行。这种架构与Selenium相反,Selenium使用HTTP连接协议,并将每个命令(如浏览器打开,单击,发送密钥或关闭浏览器)作为单独的HTTP请求发送。此外,在Selenium中,服务器和客户端之间的连接将在每次请求后终止,并为下一个请求重新建立。最后划重点:这就是Playwright比selenium快的原因!

标签:协议,Playwright,浏览器,Selenium,通信,架构
From: https://blog.51cto.com/liwen629/7621142

相关文章

  • 干货!一文搞定无头浏览器的概念以及在selenium中的应用
     无头浏览器无头浏览器,即HeadlessBrowser,是一种没有界面的浏览器。它拥有完整的浏览器内核,包括JavaScript解析引擎、渲染引擎等。与普通浏览器最大的不同是,无头浏览器执行过程中看不到运行的界面,但是我们依然可以用GUI测试框架的截图功能截取它执行中的页面。在这里强调一下......
  • 整洁架构在前端的设计思想与应用实践
    随着业务的发展,前端项目承载了越来越多的职责,也越来越复杂,简单通过cli生成的框架结构越来越无法满足。面对前端项目复杂度的不断提升,我们开始思考前端的架构组织方式怎么才更合理?应该如何设计良好的前端架构?行业是否有比较好的优秀实践?本文先从架构基本概念开始介绍,然后介......
  • Python的Selenium库:鼠标滚动和操作弹出窗口
    Selenium是一个用于自动化web应用测试的开源工具。通过Selenium,我们可以模拟真实用户的操作,如点击、输入、滚动页面等,来测试web应用的稳定性和可靠性。PythonSelenium库是Selenium的一个分支,可以方便地与Python语言结合使用。在PythonSelenium库中,元素定位和文本输入是最常用的......
  • 公司架构师说不写代码,我直接怼他了!
    1不是不写代码相反,一些核心组建核心代码都会参与,这些代码会在各种项目中去使用,对于健壮性,性能等各方面要求非常高,需要有一定水平的人才能写好。阮一峰博客有一句话:“警惕那些很长时间没有编写任何代码、却在设计系统的人。”2一般不深度参与业务代码编写因为业务代码上线过......
  • 极光笔记 | 聊一聊推送系统中事件驱动架构的应用
    微服务间通信方式主要有2种:RPC和消息传递。通常来说在请求/响应的场景下使用RPC更加合适,具体实现通常是RESTAPI或者基于长链接的协议(例如gRPC/Thrift/ZeroICE等)。两个服务有比较强的依赖关系,调用者依赖被调用者的处理结果,调用者处理该请求被堵塞以等待响应结果,同时还要进行负载......
  • selenium 账号密码登录一个网站 需要加上等待元素出现的条件EC 很重要
    #导入包fromseleniumimportwebdriverfromselenium.webdriver.common.byimportByfromselenium.webdriver.support.uiimportWebDriverWaitfromselenium.webdriver.supportimportexpected_conditionsasECfromtimeimportsleep#登录商城classlogin_shop(......
  • selenium自动化测试+OCR-获取图片页面小说
    随着爬虫技术的发展,反爬虫技术也越来越高。目前有些网站通过自定义字体库的方式实现反爬,主要表现在页面数据显示正常,但是页面获取到的实际数据是别的字符或者是一个编码。这种反爬需要解析网站自己的字体库,对加密字符使用字体库对应字符替换。需要制作字体和基本字体间映射关系。......
  • 【北亚企安数据恢复】Ceph分布式存储基本架构&概念&Ceph数据恢复流程
    Ceph存储基本架构:Ceph存储可分为块存储,对象存储和文件存储。Ceph基于对象存储,对外提供三种存储接口,故称为统一存储。Ceph的底层是RADOS(分布式对象存储系统),RADOS由两部分组成:OSD和MON。MON负责监控整个集群,维护集群的健康状态,维护展示集群状态的各种图表,如OSDMap、MonitorMap、......
  • hive架构
    Hive的架构原理及组成_hive架构_hunter95671的博客-CSDN博客......
  • 架构师需要掌握的单词4
    scattereda.分散的buildv.建造,建立,组合describevt.描述,沿…运行technologyn.工艺,技术,制造学reenterv.重新进入actuala.实际的,现实的necessarya.必要的,必然的criticala.&n.临界的;临界值turnkeyn.总控钥匙ringn.&v.环,圈;按铃reorderv.(按序)排列......