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

pytest+playwright落地实战大纲

前言

很久没有更新博客,是因为在梳理制作Playwright测试框架实战相关的课程内容。现在课程已经完结,开个帖子介绍下这门课程(硬广, o(〃^▽^〃)o)

课程放在CSDN学习频道, 欢迎关注~

PyTest+PlayWright自动化测试框架实战

请添加图片描述

为什么是Playwright?

请添加图片描述

Playwright,相比一些老牌的工具,它的诞生时间并不长,2020年才发布了第一个正式版本,当然在这之前已经有beta版推出。正因为工具比较新,所以也就有了后发优势。
而且Playwright出自微软,背靠大厂,各方面支持力度也很强,所以目前在web自动化测试工具中,上升的势头非常强劲,普遍被认为是能代替传统的web自动化霸主Selenium的新生代自动化测试工具。

当然,这个工具能受到欢迎,除了因为它是大厂出品,自然也离不开其自身的一些显著的明显优点。

  • Playwright的开发团队,是来自另一款工具puppeteer(Google基于chrome推出的web自动化工具)的核心成员。可以说Playwright是建立在puppeteer基础上的。而puppeteer,本身一度被认为是后selenium时代的web自动化三驾马车之一,所以Playwright可以说是站在巨人肩膀上,它不仅兼容了puppeteer的很多优点,还优化了puppeteer本身的一些不足,更加完善。

  • puppeteer有一个很大的约束就是它只支持chrome浏览器,而playwright则内建了对多种主流浏览器的支持,除了chrome、edge,也支持firefox、safari,能满足web自动化的主流浏览器覆盖

  • playwright支持不同的编程语言实现,除了像puppeteer原先支持的node.js之外,也可以支持java、python, 当然还有微软自己的.net。

  • Palywright还支持更多的一些扩充高级功能。

官网对playwright优势的介绍
  • 多浏览器、跨平台、多语言、以及对移动端web的支持。

  • 弹性框架,能主动规避很多导致UI自动化不够稳定的问题。包括自动等待、动态校验、过程跟踪这样一些特性

  • 更匹配现代浏览器的架构,是进程级的隔离,使用上线文的概念区分不同的测试场景,且互不干扰。还有像强化对Frame、shadow dom这样一些比较特殊的前端自动化处理

  • 更充分的隔离以及更快的执行速度,Playwright的上下文机制可以保证浏览器进程基本的隔离以及毫秒级的创建速度。执行速度的优势也得益于playwright基于websocket协议这种长连接、全双工、双向通信的通信协议。

  • 各种辅助工具,包括代码的自动化生成、录制,页面元素的定位辅助以及强大的信息跟踪工具。

工作原理

请添加图片描述

Playwright是基于Puppeteer之上的优化产物,它的实现原理可以说是puppeteer跟Selenium优点的综合。Playwright内建了一个基于Node.js实现的server模块,这个模块和基于各种不同语言的客户端程序之间,通过websocket协议来进行连接,通信,可以发挥websocket长连接、双向工作的优势。

然后再通过CDP协议对chromium内核的浏览器进行控制和自动化驱动,这里Playwright也支持firefox和webkit(其实是Playwright本身实现了针对这两款浏览器的CDP协议,这里叫CDP plus协议)。

还有个区别,Playwright其实是把浏览器版本内建在工具之中,这样就屏蔽了因浏览器版本不同导致的差异性。

测试框架在自动化测试工具体系中处于什么位置?

我们说到自动化,经常提到测试脚本、自动化工具、框架、平台,那么这些不同的概念到底有什么不一样,我们要介绍的框架,在整个自动化测试体系中,实际是处于什么位置呢?

可以用下面这个分层图来概括:

请添加图片描述

  • 脚本层面。 更多是可以通过一些测试脚本,来完成一些自动化测试任务或测试辅助工具。包括我们使用各种编程语言编写出来的测试代码,或者操作系统的一些shell、批处理脚本等,都属于脚本层面。脚本是自动化测试测试逻辑的直接体现。包括很多自动化测试录制回放工具,把手工操作,转换为测试脚本,完成的都是这个层面的工作。是自动化测试最基础的部分。

  • 工具层面。 这一层完成的是对脚本的驱动,脚本具体怎么驱动程序执行,怎么进行测试动作和结果的判断? 这些是自动化测试工具要完成的工作。不同类型的测试通常有不同的工具。我们经常说到的Selenium, Appium,Postman,QTP、Jmeter等等,包括Playwright,主要都可以理解为测试工具。可以做Web、移动应用,接口,性能等等不同类型的自动化测试。

  • 框架层面,它解决的是自动化测试的组织,把一整套自动化测试用例组织起来。包括用例的选择,执行过程的控制,结果的汇总呈现等。框架层面,最主要的是会支持不同的测试工具,可以对不同类型的自动化测试进行整合。比较常见的测试框架,比如Pytest、Junit、Robotframework等,都属于优秀的自动化测试框架。 像Junit、Pytest,开始是面向单元测试的测试框架,PyTest是借鉴Junit发展而来,但并不是说他们的应用范围就是单元测试,集成测试、系统测试也同样应用。就像自动化测试不属于某一个具体的测试阶段一样,我们也不要把某个测试工具或测试框架和测试的阶段混淆,这是两个不同维度的概念。

  • 平台层面。自动化测试平台是在更高层面来组织自动化测试。要实现测试任务的调度、测试环境的管理,测试数据、测试脚本等测试资产的管理和分配,包括和其他的研发流程实现互通,比如bug的管理、代码管理、文档管理、配置管理等与各种其他研发工具的互通和整合。

课程大纲

我的这门课程主要是结合Pytest和Playwright工具的系统介绍,学习如何搭建起一个可落地使用的自动化测试框架,包括和持续集成系统的集成。

请添加图片描述

感兴趣的小伙伴,可以关注哈,链接如下:

PyTest+PlayWright自动化测试框架实战

目前上新期,八折优惠哦~~

相关文章:

pytest+playwright落地实战大纲

前言 很久没有更新博客,是因为在梳理制作Playwright测试框架实战相关的课程内容。现在课程已经完结,开个帖子介绍下这门课程(硬广, o(〃^▽^〃)o) 课程放在CSDN学习频道, 欢迎关注~ PyTestPl…...

01-硬件入门学习/嵌入式教程-CH340C使用教程

前言 CH340C广泛应用于DIY项目和嵌入式开发中,用于USB数据转换和串口通信。本文将详细介绍CH340C的基本功能、引脚接线及使用方法。 CH340C简介 CH340C是一款USB转TTL电平转换器,可以将电脑的USB数据转换成串口数据,方便与单片机&#xff…...

小试牛刀调整Prompt,优化Token消耗

在上一篇文章 荒腔走板Mac电脑本地部署 LLM 中介绍过本地部署大模型之后,可以通过定制 prompt 来实现 domain 提取等各种各样的需求。 但是实际上,部署本地大模型 这种方式对于个人开发者来说实在是不太友好。一方面需要投入大量资金确保设备的算力足够支…...

snippets router pinia axios mock

文章目录 补充VS Code 代码片段注册自定义组件vue routerpinia删除vite创建项目时默认的文件axiosmock3.0.x版本的 viteMockServe 补充 为文章做补充:https://blog.csdn.net/yavlgloss/article/details/140063387 VS Code 代码片段 为当前项目创建 Snippets {&quo…...

Visual Studio2019调试DLL

1、编写好DLL代码之后,对DLL项目的属性进行设置,选择待注入的DLL,如下图所示 2、生成DLL文件 3、将DLL设置为启动项目之后,按F5启动调试。弹出选择注入的exe的界面之后,使用代码注入器注入步骤2中生成的dll&#xff0…...

深入解析:Docker 容器如何实现文件系统与资源的多维隔离?

目录 一、RootFs1. Docker 镜像与文件系统层2. RootFs 与容器隔离的意义 二、Linux Namespace1. 进程命名空间1.1 lsns 命令说明1.2 查看“祖先进程”命名空间1.3 查看当前用户进程命名空间 2. 容器进程命名空间2.1 查看容器进程命名空间列表2.2 容器进程命名空间的具体体现 三…...

vue项目中打包后的地址加载不出图片【五种解决方案】

在 Vue 项目中打包后,加载图片路径可能会出现问题,主要是因为打包后的路径与开发时的路径不同。为了确保图片可以正确加载,你可以考虑以下几种方法: 1. 使用 require 或 import 动态加载图片 如果你在 Vue 的模板或者脚本中引用…...

讯飞星火大模型将超越chatgpt?

讯飞星火大模型真的能超越ChatGPT吗? 在人工智能的世界里,新技术层出不穷,而科大讯飞最近发布的讯飞星火大模型3.0引发了不少讨论。有些人甚至大胆猜测:这个模型是否能够在某些方面超越如今广受欢迎的ChatGPT?今天,我们就来深入探讨一下这个话题,分析讯飞星火大模型3.0…...

3D Vision--计算点到平面的距离

写在前面 本文内容 计算点到平面的距离 平台/环境 python open3d 转载请注明出处: https://blog.csdn.net/qq_41102371/article/details/121482246 目录 写在前面准备Open3D代码完 准备Open3D pip install open3d代码 import open3d as o3ddef compute_points2…...

《开源与合作:驱动鸿蒙Next系统中人工智能技术创新发展的双引擎》

在当今科技飞速发展的时代,鸿蒙Next系统作为一款具有创新性和前瞻性的操作系统,为人工智能技术的发展提供了广阔的舞台。而开源和合作则是推动鸿蒙Next系统中人工智能技术创新和发展的两大关键引擎。 开源:创新的源泉 代码共享与知识传播&am…...

Java 高级工程师面试高频题:JVM+Redis+ 并发 + 算法 + 框架

前言 在过 2 个月即将进入 3 月了,然而面对今年的大环境而言,跳槽成功的难度比往年高了很多,很明显的感受就是:对于今年的 java 开发朋友跳槽面试,无论一面还是二面,都开始考验一个 Java 程序员的技术功底…...

【机器学习】嘿马机器学习(科学计算库)第11篇:Pandas,学习目标【附代码文档】

本教程的知识点为:机器学习(常用科学计算库的使用)基础定位 机器学习概述 机器学习概述 1.5 机器学习算法分类 1 监督学习 机器学习概述 1.7 Azure机器学习模型搭建实验 Azure平台简介 Matplotlib 3.2 基础绘图功能 — 以折线图为例 1 完善原…...

WordPress Fancy Product Designer插件Sql注入漏洞复现(CVE-2024-51818)(附脚本)

免责申明: 本文所描述的漏洞及其复现步骤仅供网络安全研究与教育目的使用。任何人不得将本文提供的信息用于非法目的或未经授权的系统测试。作者不对任何由于使用本文信息而导致的直接或间接损害承担责任。如涉及侵权,请及时与我们联系,我们将尽快处理并删除相关内容。 0x0…...

StarRocks强大的实时数据分析

代码仓库:https://github.com/StarRocks/starrocks?tabreadme-ov-file StarRocks | A High-Performance Analytical Database 快速开始:StarRocks | StarRocks StarRocks 是一款高性能分析型数据仓库,使用向量化、MPP 架构、CBO、智能物化…...

Linux(Centos 7.6)命令详解:iconv

1.命令作用 将给定文件的编码从一种编码转换为另一种编码(Convert encoding of given files from one encoding to another) 2.命令语法 Usage: iconv [OPTION...] [FILE...] 3.参数详解 OPTION: 输入/输出格式规范: -f, --from-codeNAME,原始文本编码-t, --t…...

SpringBoot读取配置优先级顺序是什么?

Spring Boot外部化配置详解 目录 引言Spring Boot外部化配置概述配置加载优先级配置加载顺序详解实际案例总结 引言 Spring Boot因其“开箱即用”的特性,极大地简化了Java应用的开发和部署过程。它通过外部化配置机制,允许开发者根据不同的环境&#x…...

VScode连接远程Linux服务器环境配置

一、安装vscode 下载链接:Visual Studio Code - Code Editing. Redefined,点击下载安装即可 安装: 双击安装 选择安装位置,一直点击下一步即可 二、环境配置 1.中文汉化包 2.安装remote-ssh,用于远程连接 2.1安装 2…...

梯度下降法 (Gradient Descent) 算法详解及案例分析

梯度下降法 (Gradient Descent) 算法详解及案例分析 目录 梯度下降法 (Gradient Descent) 算法详解及案例分析1. 引言2. 梯度下降法 (Gradient Descent) 算法原理2.1 基本概念2.2 算法步骤2.3 梯度下降法的变种3. 梯度下降法的优势与局限性3.1 优势3.2 局限性4. 案例分析4.1 案…...

docker 部署 java 项目详解

在平常的开发工作中,我们经常需要部署项目,开发测试完成后,最关键的一步就是部署。今天我们以若依项目为例,总结下部署项目的整体流程。简单来说,第一步:安装项目所需的中间件;第二步&#xff1…...

npm install 报错:Command failed: git checkout 2.2.0-c

[TOC](npm install 报错:Command failed: git checkout 2.2.0-c) npm install 报错:Command failed: git checkout 2.2.0-c export NODE_HOME/usr/local/node-v14.14.0-linux-x64 npm config set registry https://registry.npmmirror.com 使用如上环…...

测试微信模版消息推送

进入“开发接口管理”--“公众平台测试账号”,无需申请公众账号、可在测试账号中体验并测试微信公众平台所有高级接口。 获取access_token: 自定义模版消息: 关注测试号:扫二维码关注测试号。 发送模版消息: import requests da…...

业务系统对接大模型的基础方案:架构设计与关键步骤

业务系统对接大模型:架构设计与关键步骤 在当今数字化转型的浪潮中,大语言模型(LLM)已成为企业提升业务效率和创新能力的关键技术之一。将大模型集成到业务系统中,不仅可以优化用户体验,还能为业务决策提供…...

7.4.分块查找

一.分块查找的算法思想: 1.实例: 以上述图片的顺序表为例, 该顺序表的数据元素从整体来看是乱序的,但如果把这些数据元素分成一块一块的小区间, 第一个区间[0,1]索引上的数据元素都是小于等于10的, 第二…...

智慧工地云平台源码,基于微服务架构+Java+Spring Cloud +UniApp +MySql

智慧工地管理云平台系统,智慧工地全套源码,java版智慧工地源码,支持PC端、大屏端、移动端。 智慧工地聚焦建筑行业的市场需求,提供“平台网络终端”的整体解决方案,提供劳务管理、视频管理、智能监测、绿色施工、安全管…...

如何在看板中体现优先级变化

在看板中有效体现优先级变化的关键措施包括:采用颜色或标签标识优先级、设置任务排序规则、使用独立的优先级列或泳道、结合自动化规则同步优先级变化、建立定期的优先级审查流程。其中,设置任务排序规则尤其重要,因为它让看板视觉上直观地体…...

PPT|230页| 制造集团企业供应链端到端的数字化解决方案:从需求到结算的全链路业务闭环构建

制造业采购供应链管理是企业运营的核心环节,供应链协同管理在供应链上下游企业之间建立紧密的合作关系,通过信息共享、资源整合、业务协同等方式,实现供应链的全面管理和优化,提高供应链的效率和透明度,降低供应链的成…...

React19源码系列之 事件插件系统

事件类别 事件类型 定义 文档 Event Event 接口表示在 EventTarget 上出现的事件。 Event - Web API | MDN UIEvent UIEvent 接口表示简单的用户界面事件。 UIEvent - Web API | MDN KeyboardEvent KeyboardEvent 对象描述了用户与键盘的交互。 KeyboardEvent - Web…...

【开发技术】.Net使用FFmpeg视频特定帧上绘制内容

目录 一、目的 二、解决方案 2.1 什么是FFmpeg 2.2 FFmpeg主要功能 2.3 使用Xabe.FFmpeg调用FFmpeg功能 2.4 使用 FFmpeg 的 drawbox 滤镜来绘制 ROI 三、总结 一、目的 当前市场上有很多目标检测智能识别的相关算法,当前调用一个医疗行业的AI识别算法后返回…...

3-11单元格区域边界定位(End属性)学习笔记

返回一个Range 对象,只读。该对象代表包含源区域的区域上端下端左端右端的最后一个单元格。等同于按键 End 向上键(End(xlUp))、End向下键(End(xlDown))、End向左键(End(xlToLeft)End向右键(End(xlToRight)) 注意:它移动的位置必须是相连的有内容的单元格…...

GC1808高性能24位立体声音频ADC芯片解析

1. 芯片概述 GC1808是一款24位立体声音频模数转换器(ADC),支持8kHz~96kHz采样率,集成Δ-Σ调制器、数字抗混叠滤波器和高通滤波器,适用于高保真音频采集场景。 2. 核心特性 高精度:24位分辨率&#xff0c…...