吐血整理,web自动化测试,POM模式搭建自动化测试框架(超级详细)
目录:导读
- 前言
- 一、Python编程入门到精通
- 二、接口自动化项目实战
- 三、Web自动化项目实战
- 四、App自动化项目实战
- 五、一线大厂简历
- 六、测试开发DevOps体系
- 七、常用自动化测试工具
- 八、JMeter性能测试
- 九、总结(尾部小惊喜)
前言
POM设计模式
主要是将每一个页面设计为一个Class,其中包含页面中需要测试的元素(按钮,输入框,标题 等),这样在Selenium测试页面中可以通过调用页面类来获取页面元素,这样巧妙的避免了当页面元素id或者位置变化时,需要改测试页面代码的情况。
web自动化测试:https://www.bilibili.com/video/BV1MS4y1W79K/
当页面元素id变化时,只需要更改测试页Class中页面的属性即可。 简单来讲,就是将代码以页面为单位进行组织,针对这个页面上的所有信息,相关操作都放到一个类中;从而使具体的测试用例变成了简单的调用和验证操作。
POM的优点
1、PO提供了页面元素操作和业务流程相分离的模式,可以使测试的代码结构比之前清晰,可读性强。
2、更方便地复用对象和方法。
3、对象库是独立于测试用例的、统一的对象库,可以通过集成不同的工具类来达到不同的测试目的。比如集成pytest可以用来做单元测试、自动化/功能测试,同时也可以集成JBehave/Cucumber等来做验收测试。
4、使得整体自动化测试的优点变得更容易一些,如果有某个页面的元素需要变更,那么就可以直接更改封装好的页面元素类即可,而不用更改调用它的其他测试类/代码。这样整个的代码维护成本也会缩减。
PO的核心就是分层思想,把同属于一个页面的元素都放在一个页面类中。
POM结构设计
逻辑代码:基类,实现所有工具函数封装,类似于关键字驱动设计模式;
页面对象代码:基于系统页面,通过调用工具函数来实现业务的操作,生成对应的页面对象;
测试代码:基于测试需要,组件页面对象,实现核心流程的自动化,执行测试用例;
测试数据:为测试用例的执行提供所需要的测试数据。
PO模式主要分三层
基础层BasePage:封装一些最基础的方法,元素定位,框架跳转等
PO层:元素定位、获得元素对象,页面动作
测试用例层:业务逻辑,数据驱动
三者的关系:PO层继承继承层,测试用例层调用PO层。
页面对象模型(PO)是一种设计模式,用来管理维护一组页面元素的对象库;
在PO下,应用程序的每一个页面都有一个对应的Page类;
每一个Page类维护着该页面的元素集和操作这些元素的方法;
基本原则
每个页面都是一个类
所有的定位封装类的属性
操作行为封装成类的方法
相同的行为不同的结果创建为不同的方法
定位属性不要暴露给外部
不要在方法内进行断言
搭建POM模型框架
以微信登录为例子
微信登录PO模式,先来做下分析:
封装页面,如:登录页面可以设计成LoginPage类
封装方法,如:登录页面的登录方法是login(username,password)
外部文件维护数,如:定位用户名和密码框的表达方法不写在代码里,放在外部文件中
页面元素属性化,如:只要涉及到要操作的元素名称,具体定位方式不在代码中,元素定位做到可以配置化,配置以键值对的形式存在。
根据前面的知识,举个登录的例子
梳理一遍登录流程
要进行一次成功的登录,需要做哪些事情?
要进入登录页面,需要经过哪些页面?
要能够完成登录操作,需要操作哪些元素?
要完成这些元素的操作,又需要哪些操作?
经过分析:
要进行一次成功的登录:需要进入首页,然后点击登录按钮,再在登录页面输入正确的用户名和密码,最后点击登录按钮
要进入登录页面:成功进入首页,然后点击登录按钮
要能够完成登录操作:需要用户名和密码输入框、登录按钮
要完成这些元素操作:需要senk_key()、click()的方法
接下来可以记录下,完成登录的操作,一共经过两个页面:首页和登录页,当然为了简化起见,可以直接从登陆页开始。这里就确定了PO设计中的页面设计。
再根据前面PO模型的结构:可以把整个脚本再拆开,建立几个包:page、testcase等等。
完整的POM完整框架
Base层:定义项目需要的基础方法,特别是一些基础操作,如元素click操作、sendkeys操作,调用JavaScript脚本的方法和其他一些与基本浏览器相关的操作。
Common层:包含处理Excel文件的方法,获取项目路径、测试系统URL的信息和框架执行相关日志功能的实现方法。
Data层:存放测试数据,在这里可以维护测试数据,这样存放是为了让项目的可维护性强、整体的条理性强。测试数据有时是自动化测试的驱动因素,因此对Data的管理和维护就显的特别重要。
Logs层:存放项目在运行过程中产生的日志文件。
PageObject层:这里是PO的核心层,该层不但涉及代码技术,还涉及对项目业务的分析,进而对项目的页面进行分析。
Reports层:存放项目执行过程中产生的测试报告文件,测试报告是对测试结果的总结。
TestCase层:管理测试用例和执行测试,相当于测试的总入口。
config.ini:整个项目需要用到的配置项。
| 下面是我整理的2023年最全的软件测试工程师学习知识架构体系图 |
一、Python编程入门到精通

二、接口自动化项目实战

三、Web自动化项目实战

四、App自动化项目实战

五、一线大厂简历

六、测试开发DevOps体系

七、常用自动化测试工具

八、JMeter性能测试

九、总结(尾部小惊喜)
生命力的意义在于拼搏,因为世界本身就是一个竞技场,就是无数次被礁石击碎又无数闪地扑向礁石,生命的绿荫才会越长越茂盛。
我们在我们的劳动过程中学习思考,劳动的结果,我们认识了世界的奥妙,于是我们就真正来改变生活了。
能不能成功,关键在于我们是直面困难、解决困难,还是回避困难、在困难面前放弃。如果你不端正自己的态度,那么你永远都做不好事情。
相关文章:
吐血整理,web自动化测试,POM模式搭建自动化测试框架(超级详细)
目录:导读前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜)前言 POM设计模式 主要是…...
【数据库原理复习】索引 视图 sql语句
这里写目录标题视图视图特点视图定义优点索引相关sql三种索引区别解释视图 视图特点 只是虚表,并不实际存放数据,所有数据都来自于基本表建立在一个或几个基本表或视图之上基本表数据变化视图也随之变化只保存视图定义等之类东西 视图定义 # 定义视图…...
【HDFS】IPC重试
1、IPC重试和dfs.client.retry重试的区别2、IPC重试的相关参数汇总及含义3、 IPC重试相关源码、原理简单总结一句话: IPC重试是因为连接问题而进行重试; 客户端重试是因为RPC在服务端处理发生异常,客户端根据指定的策略进行重试。 接下来让我们深入一下源码,因为每一部分源…...
Revit导出CAD图纸操作及批量导出
一、Revit如何导出CAD格式图纸 1.打开Revit模型。 2.项目浏览器,图纸(全部),鼠标右键点击,新建图纸。 3.选择自己需要的图纸大小,点击“确定”,即可创建一张图纸。 4.找到想要导出的图纸标高或者立面,例如&…...
【批处理脚本】-3.4-goto命令详解
"><--点击返回「批处理BAT从入门到精通」总目录--> 共4页精讲(列举了所有goto的用法,图文并茂,通俗易懂) 在从事“嵌入式软件开发”和“Autosar工具开发软件”过程中,经常会在其集成开发环境IDE(CodeWarrior,S32K DS,Davinci,EB Tresos,ETAS…)中,…...
超详细CentOS7 NAT模式(无图形化界面即最小安装)网络配置
在此附上CentOS7(无图形化界面最小安装)安装教程 超详细VMware CentOS7(无图形化界面最小安装)安装教程 打开VMware—>点击编辑---->选择虚拟网络编辑器 打开虚拟网络编辑器后如下图所示: 从下图中我们看到标…...
【可信平台】开证问题汇总--1.无采购入库记录,2.箱码无产出记录
这里面的问题主要有两类, 批号无采购入库记录箱码无产出记录批号无采购入库记录 第一个问题,以批号 W200263242022100600018 为例。 MES里入库明细里能查到可信平台集成报错: 入库数量>采购数量 再看下入库明细里的情况: 可信平台集成提示物料库存不存在。(没有入库记…...
RolePred: Open-Vocabulary Argument Role Prediction for Event Extraction 论文解读
Open-Vocabulary Argument Role Prediction for Event Extraction 论文:2211.01577.pdf (53yu.com) 代码:yzjiao/RolePred: Source code for EMNLP findings paper “Open-Vocabulary Argument Role Prediction for Event Extraction” (github.com) 期…...
【数据结构】链表相关题目(简单版)
🚀write in front🚀 📜所属专栏: 初阶数据结构 🛰️博客主页:睿睿的博客主页 🛰️代码仓库:🎉VS2022_C语言仓库 🎡您的点赞、关注、收藏、评论,是…...
通信原理 | FFT/STFT 你真的学会了吗?
文章目录 原理FFT的例子1必须要理解的点函数FFT返回值的数据结构具有对称性单边谱和双边谱变换后到频域后的横坐标和纵坐标是什么?FFT的例子2FFT的例子3短时傅里叶变换(STFT)原理 傅里叶告诉我们,现实中的任和信号波形都可以视为一系列正弦信号的叠加。 那对于一个给定的信…...
Qt使用API实现鼠标点击操作
前段时间,工作需要进行数据录入,每次都要点击3次按钮,想让鼠标自行点击,只要下位机接入,就自动点击按钮把数据读出,录入到服务端,并且进行检测,说干就干,没有经验,那只有面向百度编程. 根据查到的资料,可以使用WinAPI进行鼠标模似.可以使用的函数有两个,一个是SendMessageA(),…...
JavaWeb学习-Tomcat
常用的Web服务器 ①IIS:Microsoft的Web服务器产品为Internet Information Services (IIS),IIS 是允许在公共Intranet或Internet上发布信息的Web服务器。ⅡS是目前最流行的Web服务器产品之一,很多著名的网站都是建立在…...
【蓝牙系列】蓝牙5.4到底更新了什么(2)
【蓝牙系列】蓝牙5.4到底更新了什么(2) 一、 背景 上一篇文章讲了蓝牙5.4的PAwR特征,非常适合应用在电子货架标签(ESL)领域, 但是实际应用场景中看,只有PAwR特性是不够的,如何保证广…...
js中window自带的四舍五入toFixed方法中的坑以及解决办法
Hello,各位,我胡汉三~啊呸,我又回来啦,还改了名,换了头像,哈哈哈!时隔这么长时间不更新了,太忙了,平时笔记都记在了自己的电脑上,从今天起,继续更…...
JeecgBoot 3.5.0 版本发布,开源的企业级低代码平台
项目介绍 JeecgBoot是一款企业级的低代码平台!前后端分离架构 SpringBoot2.x,SpringCloud,Ant Design&Vue3,Mybatis-plus,Shiro,JWT 支持微服务。强大的代码生成器让前后端代码一键生成! JeecgBoot引领…...
行测-判断推理-图形推理-样式规律-空间重构-四面体和八面体
B很明显就是对的,可以看到就选B走人A选项:横线的右边应该是菱形,而不是竖线,排除AC选项:菱形的左边应该是横线,而不是竖线,排除CD选项:横线脚底下踩的应该是三角形砖,而不…...
HTML5新特性
HTML5 简介 HTML5 是下一代 HTML 标准。 HTML5在HTML4.01的基础上新增了一些特性,从而可以让我们能够更快捷更方便的开发应用,同时去掉了一些 “糟粕”。 现在的主流浏览器基本都支持HTML5。 在一个HTML5 文档中的第一行,我们需要使用<…...
TDengine Schemaless(无模式写入)常见问题的原因及故障排除
Tips:使用版本:3.0.2.6 (一)TDengine ERROR (80003002): Invalid data format 格式化问题;如缺少必要的组成格式(时间戳、超级表等),或有字符串未作修饰符修饰,类似的还…...
【前端八股文】浏览器系列:浏览器渲染、前端路由、前端缓存(HTTP缓存)、缓存存储(HTTP缓存存储、本地存储)
文章目录渲染步骤DOM树与render树回流与重绘前端路由hash模式history模式两种模式对比前端缓存HTTP缓存强缓存协商缓存一般哪些文件对应哪些缓存HTTP缓存总结缓存存储HTTP缓存存储本地存储参考本系列目录:【前端八股文】目录总结 是以《代码随想录》八股文为主的笔记…...
SpiderFlow爬虫获取网页节点
SpiderFlow爬虫获取网页节点 一、SpiderFlow 文档地址:https://www.spiderflow.org/ 二、问题:获取一篇文章的标题、来源、发布时间、正文、下载附件该怎么获取? 举例:【公示】第三批智能光伏试点示范名单公示 三、抓取网页步骤…...
华为云AI开发平台ModelArts
华为云ModelArts:重塑AI开发流程的“智能引擎”与“创新加速器”! 在人工智能浪潮席卷全球的2025年,企业拥抱AI的意愿空前高涨,但技术门槛高、流程复杂、资源投入巨大的现实,却让许多创新构想止步于实验室。数据科学家…...
Docker 离线安装指南
参考文章 1、确认操作系统类型及内核版本 Docker依赖于Linux内核的一些特性,不同版本的Docker对内核版本有不同要求。例如,Docker 17.06及之后的版本通常需要Linux内核3.10及以上版本,Docker17.09及更高版本对应Linux内核4.9.x及更高版本。…...
MFC内存泄露
1、泄露代码示例 void X::SetApplicationBtn() {CMFCRibbonApplicationButton* pBtn GetApplicationButton();// 获取 Ribbon Bar 指针// 创建自定义按钮CCustomRibbonAppButton* pCustomButton new CCustomRibbonAppButton();pCustomButton->SetImage(IDB_BITMAP_Jdp26)…...
线程同步:确保多线程程序的安全与高效!
全文目录: 开篇语前序前言第一部分:线程同步的概念与问题1.1 线程同步的概念1.2 线程同步的问题1.3 线程同步的解决方案 第二部分:synchronized关键字的使用2.1 使用 synchronized修饰方法2.2 使用 synchronized修饰代码块 第三部分ÿ…...
鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个医院挂号小程序
一、开发准备 环境搭建: 安装DevEco Studio 3.0或更高版本配置HarmonyOS SDK申请开发者账号 项目创建: File > New > Create Project > Application (选择"Empty Ability") 二、核心功能实现 1. 医院科室展示 /…...
什么是库存周转?如何用进销存系统提高库存周转率?
你可能听说过这样一句话: “利润不是赚出来的,是管出来的。” 尤其是在制造业、批发零售、电商这类“货堆成山”的行业,很多企业看着销售不错,账上却没钱、利润也不见了,一翻库存才发现: 一堆卖不动的旧货…...
MVC 数据库
MVC 数据库 引言 在软件开发领域,Model-View-Controller(MVC)是一种流行的软件架构模式,它将应用程序分为三个核心组件:模型(Model)、视图(View)和控制器(Controller)。这种模式有助于提高代码的可维护性和可扩展性。本文将深入探讨MVC架构与数据库之间的关系,以…...
基于数字孪生的水厂可视化平台建设:架构与实践
分享大纲: 1、数字孪生水厂可视化平台建设背景 2、数字孪生水厂可视化平台建设架构 3、数字孪生水厂可视化平台建设成效 近几年,数字孪生水厂的建设开展的如火如荼。作为提升水厂管理效率、优化资源的调度手段,基于数字孪生的水厂可视化平台的…...
鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个医院查看报告小程序
一、开发环境准备 工具安装: 下载安装DevEco Studio 4.0(支持HarmonyOS 5)配置HarmonyOS SDK 5.0确保Node.js版本≥14 项目初始化: ohpm init harmony/hospital-report-app 二、核心功能模块实现 1. 报告列表…...
Java线上CPU飙高问题排查全指南
一、引言 在Java应用的线上运行环境中,CPU飙高是一个常见且棘手的性能问题。当系统出现CPU飙高时,通常会导致应用响应缓慢,甚至服务不可用,严重影响用户体验和业务运行。因此,掌握一套科学有效的CPU飙高问题排查方法&…...
