当前位置: 首页 > news >正文

探索Playwright的现代自动化测试力量

在当今数字化时代,Web应用程序的质量和稳定性对于企业的成功至关重要。为了确保Web应用程序的无缝运行,自动化测试工具成为了开发人员和测试团队的重要工具。多年来,Selenium一直是自动化测试的黄金标准,然而,在不久前,一个新的有力竞争者崭露头角——Playwright。

Playwright是一个现代的自动化测试工具,由Microsoft开发并维护,旨在满足现代Web应用程序的需求。它提供了一种全面的自动化测试解决方案,涵盖了各种Web浏览器,包括Chromium、Firefox和WebKit。与此同时,Selenium作为一个老牌的自动化测试工具,也一直备受青睐,但在面对新一代Web应用程序时,是否能够保持竞争力呢?

图片

Playwright简介

Playwright是一款定位于端到端(End-to-End,端到端就是用于测试整个应用程序的流程是否符合预期的测试技术,模拟用户真实使用场景,为实现这一目标,该系统通常被视为黑盒子,也就是所谓的黑盒测试,主要通过GUI和API等公共接口对其进行操作)的测试工具。

图片

目前在国内Web自动化测试的扛把子还是Selenium,但是国外已经有很多企业都在使用Playwright,比如:Adobe、微软自带的某些项目(Visual Studio Code、Bing)、Disney Hostar等。

既然在市面上已经有非常成熟好用的Selenium框架,并且在持续的更新,社群也十分活跃,微软为什么还要整一个额外的自动化测试工具出来呢?

两个工具的定位不同,由于Playwright是后出来的工具,所以在一些细节方面会处理得更好。

跨浏览器

虽然Selenium提供了几乎所有浏览器的兼容和支持,但是还需要额外下载对应的浏览器版本的驱动,否则Selenium WebDriver可能就无法启动。而Playwright内置了各种浏览器以及浏览器驱动(支持所有现代渲染引擎,包括Chromium、Firefox和WebKit),并且不需要额外的升级和管理,这会使整个自动化测试项目将会更加稳定。

自动等待

使用Selenium的时候,通常会根据测试需求,在代码中加入各种等待,而在Playwright中没有隐式等待,显示等待也已经封装好了,直接调用即可。

Web优先断言

Playwright会根据网络环境进行自动断言,直到满足某种条件为止。

并行执行

在Selenium中,执行测试用例是单线程的,但在Playwright中,由于运行机制不一样(Selenium的指令发送是通过http协议,而Playwright则是使用socket协议;Playwright是通过上下文管理浏览器,相当于每一个测试用例都会创建一个独立的上下文,浏览器的上下文其实就是一个全新的浏览器,这种方式的好处就是在提速的同时又实现测试与测试之间的隔离,使得测试结果更加准确),所以可以实现并行执行。

工具集

Playwright提供了强大的工具集,例如:脚本录制工具codegen、脚本编写以及调试工具等。

PLaywright初体验

以Python语言为例,编写第一个Playwright脚本。

安装PLaywright

pip install playwright

我已经安装,这里显示已安装的版本

图片

安装PLaywright内置浏览器

图片

第一个PLaywright脚本

图片

录制代码

输入命令进行脚本录制:

python -m playwright codegen --target python -o 'shuxin.py' -b cr  https://www.datacyber.com/ 

图片

录制的代码如下:

图片

录制代码的好处在于它能够自动记录和回放用户交互,提高测试效率、准确性和重复性,降低成本,特别适用于回归测试,并可支持多浏览器兼容性测试。然而,它在处理复杂测试场景和动态元素方面可能有限制,因此通常会与手动编写测试代码相结合,以满足不同测试需求,提高自动化测试的效益。

并行执行测试用例

Playwright采用了更现代的机制来执行测试用例,通过使用WebSocket协议与浏览器通信。每个测试用例在其独立的浏览器上下文中执行,每个上下文相当于一个全新的浏览器实例。这种方式使得测试用例之间具有很高的隔离性,可以并行执行,而不会相互干扰

图片

总结

Selenium和Playwright都是流行的自动化测试工具,它们都拥有丰富的功能和API,可以用于测试Web应用程序。它们之间的主要区别在于安装和配置、API和语法、性能和速度、支持的浏览器和操作系统以及社区支持和文档等方面。根据不同的需求和场景,可以选择合适的自动化测试工具来进行测试。

PLaywright与Selenium对比

一、安装和配置

Selenium

Selenium需要安装浏览器驱动程序,以便在浏览器中执行测试。驱动程序需要与浏览器版本匹配。Selenium支持多种浏览器,包括Chrome、Firefox、Safari、Opera、Edge等。以下是使用Chrome驱动程序的示例:

图片

Playwright

Playwright不需要安装浏览器驱动程序,它自带了浏览器引擎。Playwright支持多种浏览器,包括Chrome、Firefox和WebKit(Safari)等。以下是使用Playwright启动Chrome浏览器的示例:

图片

二、API和语法

Selenium

Selenium使用WebDriver API,可以用多种编程语言编写。Selenium提供了丰富的API,可以用于模拟用户在浏览器中的操作,包括点击、输入、等待、截图等操作。以下是使用Python编写的Selenium测试用例的示例:

图片

Playwright

Playwright使用同步和异步API,可以用多种编程语言编写。Playwright提供了丰富的API,可以用于模拟用户在浏览器中的操作,包括点击、输入、等待、截图等操作。以下是使用Python编写的Playwright测试用例的示例:

图片

三、性能和速度

Selenium

Selenium的性能和速度依赖于浏览器驱动程序和浏览器版本。在运行大规模测试时,Selenium的性能和速度可能会受到限制。此外,Selenium需要等待页面加载完成后才能继续执行下一步操作,这可能会导致测试运行时间变长。

Playwright

Playwright的性能和速度更好,因为它使用浏览器自带的API执行操作,而不是通过驱动程序进行交互。此外,Playwright使用异步API,可以更好地处理异步操作,从而提高性能和速度。在运行大规模测试时,Playwright的性能和速度也更好。

四、支持的浏览器和操作系统

Selenium

Selenium支持多种浏览器和操作系统,包括Chrome、Firefox、Safari、Opera、Edge等。Selenium可以在Windows、Mac和Linux等多种操作系统上运行。

Playwright

Playwright支持多种浏览器和操作系统,包括Chrome、Firefox和WebKit(Safari)等。Playwright可以在Windows、Mac和Linux等多种操作系统上运行。

五、社区支持和文档

Selenium

Selenium拥有广泛的社区支持和文档,有大量的教程、文档和示例代码可供参考。此外,Selenium有许多第三方库和插件,可以扩展其功能和特性。

Playwright

Playwright是相对较新的测试工具,社区支持和文档相对较少,但是随着其在自动化测试领域的普及,相信会有更多的文档和教程可供参考。个人理解附图仅供参考:

图片

相关文章:

探索Playwright的现代自动化测试力量

在当今数字化时代,Web应用程序的质量和稳定性对于企业的成功至关重要。为了确保Web应用程序的无缝运行,自动化测试工具成为了开发人员和测试团队的重要工具。多年来,Selenium一直是自动化测试的黄金标准,然而,在不久前…...

游戏mod制作--引擎与解包

摘要 游戏mod的制作过程第一步就是需要将原始的游戏工程文件进行解包,得到相应的资源文件(贴图,音频,事件,模型甚至源代码等),这个时候下一步就是需要将解包出来的文件进行分类索引&#xff0c…...

3D模型制作木质纹理贴图

在线工具推荐: 3D数字孪生场景编辑器 - GLTF/GLB材质纹理编辑器 - 3D模型在线转换 - Three.js AI自动纹理开发包 - YOLO 虚幻合成数据生成器 - 三维模型预览图生成器 - 3D模型语义搜索引擎 本文将讲解如何使用GLTF 编辑器 -NSDT 在线材质编辑工具为3D模型设置…...

[足式机器人]Part2 Dr. CAN学习笔记-数学基础Ch0-4线性时不变系统中的冲激响应与卷积

本文仅供学习使用 本文参考: B站:DR_CAN Dr. CAN学习笔记-数学基础Ch0-4线性时不变系统中的冲激响应与卷积 1. LIT System:Linear Time Invariant2. 卷积 Convolution3. 单位冲激 Unit Impulse——Dirac Delta 线性时不变系统 : L…...

CSS BFC特性和应用

目录 1,介绍2,BFC布局规则3,创建BFC4,BFC应用1,浮动子元素使父级高度坍塌2,非浮动元素被浮动元素覆盖3,margin 合并1,父子 margin 合并:父级和第1个/最后1个子元素2&…...

软件工程 - 第8章 面向对象建模 - 3 - 动态建模

状态图 状态是指在对象生命周期中满足某些条件、执行某些活动或等待某些事件的一个条件和状况 。 案例一:描述烧水器在工作时的详细行为细节 “人就是一个类,而你”、我”、张三”等都是“人这个类的一个实例,站着”、“躺着等都是对象的一…...

Stable Diffusion AI绘画系列【16】:霸气侧漏的二次元武侠风

《博主简介》 小伙伴们好,我是阿旭。专注于人工智能、AIGC、python、计算机视觉相关分享研究。 ✌更多学习资源,可关注公-仲-hao:【阿旭算法与机器学习】,共同学习交流~ 👍感谢小伙伴们点赞、关注! 《------往期经典推…...

第二证券:苹果市值重返3万亿美元,关键因素并非人工智能

当地时间12月5日,到美股收盘,苹果公司股价收涨2.1%,报193.42美元,收盘市值重返3万亿美元上方。 上一年12月,苹果公司市值曾在盘中时间短触及3万亿门槛,但收盘并未站稳,本年6月收盘时正式打破3万…...

西南科技大学C++程序设计实验六( 继承与派生一)

一、实验目的 1. 理解不同继承属性对派生类访问基类成员的区别 2. 掌握单继承程序编写 二、实验任务 1、调试下列程序,并在对程序进行修改后再调试,指出调试中的出错原因(该题中A为基类,B为派生类,B以public方式继承A) 重点:理解不同继承方式数据的访问权限,派生类…...

MySQL 性能优化

未完待续... 1. 分库、分表结构优化 1.1 数据库设计 不规范的数据库设计存在数据冗余以及插入、更新、删除异常问题。 规范化(Normalization)是数据库设计的一系列原理和技术,主要用于减少表中数据的冗余,增加完整性和一致性&…...

求职招聘小程序源码系统 全开源源代码:找工作+招人才 平台级别运营版 附带完整的搭建教程

在当前的求职招聘市场中,尽管存在大量的求职者和招聘者,但依然存在着信息不对称、沟通不畅等问题。小编来给大家分享一款求职招聘小程序源码系统,旨在提供一个高效、便捷、安全的求职招聘平台。 以下是部分代码示例: 系统特色功能…...

26、卷积 - 实际上是一个特征提取器

矩阵乘法的本质是特征的融合,卷积算法的本质是特征的提取。 回想一下之前所有介绍卷积的时候,描述了一种卷积运算的场景,那就是一个窗口在图片上滑动,窗口中的数值是卷积核的参数,也就是权值。 卷积的计算本质是乘累…...

web前端之vue3

MENU vue3响应式数据的判断、isRef、isReactive、isReadonly、isProxy、ref、reactive、readonlyvue3的生命周期vue3手写isRef、isReactive、isReadonly、isProxyvue3手写ref、深的refvue3手写shallowRef、浅的refvue3customRefvue3readonly与shallowReadonlyvue3toRaw与markRa…...

原来在C++的类中声明函数时可以不写参数名只写参数类型

2023年12月6日&#xff0c;周三上午 今天才发现原来可以这样写 在C的类中声明函数时可以不写参数名只写参数类型&#xff0c; 但是&#xff0c;在实现时必须写出参数名。 #include<iostream>class People { public:void move(int);void say(std::string);void doSomet…...

独孤思维:这里有蓝海项目,你要吗?

很多人&#xff0c;一看到蓝海项目&#xff0c;就趋之若鹜。 觉得红海项目太卷了&#xff0c;根本赚不到钱。 凡是认为蓝海项目不卷&#xff0c;可以做起来&#xff0c;做的轻松的&#xff0c;都是弱智和无能的表现。 你所能接触到的蓝海&#xff0c;根本就不是蓝海。 能够…...

外卖平台推荐算法的优化与实践

目录 引言 一、推荐算法的原理 二、推荐算法的挑战 三、实际案例分析 四、优化推荐算法的策略 五、结论 引言 在当今数字化社会&#xff0c;外卖平台成为了人们生活中不可或缺的一部分。为了提供更加个性化、高效的服务&#xff0c;外卖平台使用推荐算法成为了一项关键技…...

CONTROLLING VISION-LANGUAGE MODELS FOR MULTI-TASK IMAGE RESTORATION

CONTROLLING VISION-LANGUAGE MODELS FOR MULTI-TASK IMAGE RESTORATION (Paper reading) Ziwei Luo, Uppsala University, ICLR under review(6663), Cited:None, Stars: 350, Code, Paper. 1. 前言 像CLIP这样的视觉语言模型已经显示出对零样本或无标签预测的各种下游任务…...

HarmonyOS应用开发——页面

我们将对于多页面以及更多有趣的功能展开叙述&#xff0c;这次我们对于 HarmonyOS 的很多有趣常用组件并引出一些其他概念以及解决方案、页面跳转传值、生命周期、启动模式&#xff08;UiAbility&#xff09;&#xff0c;样式的书写、状态管理以及动画等方面进行探讨 页面之间…...

Java流Stream使用详解(练习)

练习 第一题 数据过滤 定义一个集合&#xff0c;并添加一些整数1,2,3,4,5,6,7,8,9,10过滤奇数&#xff0c;只留下偶数&#xff0c;并将结果保存起来 import java.util.ArrayList; import java.util.Collections; import java.util.List; import java.util.stream.Collectors…...

请介绍一下MySQL的存储引擎及其特点

问题&#xff1a;请介绍一下MySQL的存储引擎及其特点。 回答&#xff1a; MySQL是一个开源的关系型数据库管理系统&#xff0c;它支持多种存储引擎&#xff0c;每个存储引擎都有其自身的特点和适用场景。下面是对MySQL常见存储引擎的简要介绍&#xff1a; InnoDB&#xff1a; …...

Python---魔术方法

1、什么是魔术方法 在Python中&#xff0c;__xxx__()的函数叫做魔法方法&#xff0c;指的是具有特殊功能的函数。 2、__init__()方法(初始化方法或构造方法) 思考&#xff1a;人的姓名、年龄等信息都是与生俱来的属性&#xff0c;可不可以在生产过程中就赋予这些属性呢&…...

手把手教你注册意大利商标

在当今全球商业环境中&#xff0c;拥有一个独特的商标可以为企业在市场竞争中提供重要优势。商标作为品牌形象的核心&#xff0c;有助于吸引潜在客户&#xff0c;提升品牌价值&#xff0c;增加客户忠诚度。在意大利&#xff0c;商标注册同样具有重要意义&#xff0c;它能为企业…...

pandas详细笔记

一&#xff1a;什么是Pandas from matplotlib import pyplot import numpy as np import pandas as pdarange np.arange(1, 10, 2) series pd.Series(arange,indexlist("ABCDE")) print(series)二&#xff1a;索引 三&#xff1a;切片 位置索引切片&#xff08;左闭…...

win11安装(未完待续)

学习补丁 test.bat 运行后需要重启 slmgr /ipk W269N-WFGWX-YVC9B-4J6C9-T83GX slmgr /skms kms.03k.org slmgr /ato 文件扩展名 主题 性能设置 开始按钮靠左 任务栏对齐方式-靠左 必备软件 f.lux redshift 360管家 驱动精灵 edge c*lash&#xff08;v2*ray不支持w…...

python之记录程序运行时长工具

python之记录程序运行时长工具 废话不多话&#xff0c;上代码 from datetime import datetime, timedelta import timestart_time datetime.now()while True:current_time datetime.now()elapsed_time current_time - start_timeformatted_time str(elapsed_time).split(…...

.Net core 6.0 升8.0

1 Update Visual Studio 2 3 用Nutget 更新不同套件版本 更新后结果如下&#xff1a;...

MacDroid Pro for Mac – 安卓设备文件传输助手,实现无缝连接与传输!

想要在Mac电脑上轻松管理和传输您的安卓设备文件吗&#xff1f;MacDroid Pro for Mac 是您的最佳选择&#xff01;这款强大的文件传输助手可以让您在Mac上与安卓设备之间实现快速、方便的文件传输。 MacDroid Pro for Mac 提供了简单易用的界面&#xff0c;让您能够直接在Mac上…...

【EtherCAT详解】基于Wireshark的EtherCAT帧结构解析

写在前面 EtherCAT的报文比较繁琐,且一些参考书籍错误较多,且晦涩难懂,对于初学者,很难快速的入门。本文适用于有一定基础的研究者,如对报文有一些研究、对canopen协议有一定了解、并且对TwinCAT有了解的研究者。当然,对于初学者来说,也是很好的引导,少走很多弯路。本…...

C语言之程序的组成和元素格式

目录 关键字 运算符 标识符 姓名和标识符 分隔符 常量和字符串常量 自由的书写格式 书写限制 连接相邻的字符串常量 缩进 本节我们来学习程序的各组成元素&#xff08;关键字、运算符等&#xff09;和格式相关的内容。 关键字 在C语言中&#xff0c;相if和else这样的标识…...

HalconDotNet.HTupleAccessException:Index out of range

原因可能是没有生成hv_Qx的值&#xff0c;我这里是没有生成该值的区域。...

做网站要求什么条件/广州网站建设技术外包

2019独角兽企业重金招聘Python工程师标准>>> 我们经常看到大网站支持逗号分隔的CSS,JS加载&#xff0c;例如&#xff1a; link type"text/css" rel"stylesheet" href"http://s.juancdn.com/juanpi/css/??base.css,globale.css,md-busine…...

c2c网站的类型/百度推广官方网站

skyline是一款不错的三维编辑浏览软件&#xff0c;官方提供的是英文版&#xff0c;目前还没有汉化包&#xff0c;为了使用方便&#xff0c;我们需要汉化一些简单的对话框&#xff0c;本文介绍如何汉化skyline右键菜单。 首先打开skyline的安装目录&#xff0c;在TerraExplorer …...

四种软件开发模型/网站优化快速排名软件

HTML如何使用span标签的class属性发布时间&#xff1a;2020-07-15 14:43:10来源&#xff1a;亿速云阅读&#xff1a;354作者&#xff1a;Leah这篇文章将为大家详细讲解有关HTML如何使用span标签的class属性&#xff0c;文章内容质量较高&#xff0c;因此小编分享给大家做个参考…...

常州网站建设公司报价/今日军事新闻最新消息新闻报道

声明一个类&#xff0c;必须实现<RCTBridgeModule> 协议 .m文件中实现宏定义RCT_EXPORT_MODULE&#xff08;&#xff09;&#xff0c;当它加载的时候&#xff0c;会自动注册 // js_name 就是react native 获取类时所对应的名称&#xff0c; // 即 NativeModules.js_name…...

企业网站管理系统的设计与实现/淘宝关键词查询工具

七、radio 单选框radio-group 属性名类型默认值说明bindchangeEventHandle radio-group中的选中项发生变化时触发change事件&#xff0c;event.detai {value : 选中项radio的valueradio 属性名类型默认值说明valueString radio标识。当该radio选中时&#xff0c;radio-group的…...

东莞模板建站哪家好/免费网络项目资源网

任务管理器的设置: 第一步&#xff1a;点击“开始”菜单——>选择“运行”——>在运行中输入“GPEDIT.MSC”(不含引号)&#xff0c;点击确定打开组策略&#xff1b;第二步&#xff1a;展开左边“用户配置”下方的“管理模板”前面的号——>再展开“系统”前面的号——…...