吐血整理,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/ 二、问题:获取一篇文章的标题、来源、发布时间、正文、下载附件该怎么获取? 举例:【公示】第三批智能光伏试点示范名单公示 三、抓取网页步骤…...
linux 下常用变更-8
1、删除普通用户 查询用户初始UID和GIDls -l /home/ ###家目录中查看UID cat /etc/group ###此文件查看GID删除用户1.编辑文件 /etc/passwd 找到对应的行,YW343:x:0:0::/home/YW343:/bin/bash 2.将标红的位置修改为用户对应初始UID和GID: YW3…...

c#开发AI模型对话
AI模型 前面已经介绍了一般AI模型本地部署,直接调用现成的模型数据。这里主要讲述讲接口集成到我们自己的程序中使用方式。 微软提供了ML.NET来开发和使用AI模型,但是目前国内可能使用不多,至少实践例子很少看见。开发训练模型就不介绍了&am…...

多种风格导航菜单 HTML 实现(附源码)
下面我将为您展示 6 种不同风格的导航菜单实现,每种都包含完整 HTML、CSS 和 JavaScript 代码。 1. 简约水平导航栏 <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta name"viewport&qu…...
CMake控制VS2022项目文件分组
我们可以通过 CMake 控制源文件的组织结构,使它们在 VS 解决方案资源管理器中以“组”(Filter)的形式进行分类展示。 🎯 目标 通过 CMake 脚本将 .cpp、.h 等源文件分组显示在 Visual Studio 2022 的解决方案资源管理器中。 ✅ 支持的方法汇总(共4种) 方法描述是否推荐…...
高防服务器价格高原因分析
高防服务器的价格较高,主要是由于其特殊的防御机制、硬件配置、运营维护等多方面的综合成本。以下从技术、资源和服务三个维度详细解析高防服务器昂贵的原因: 一、硬件与技术投入 大带宽需求 DDoS攻击通过占用大量带宽资源瘫痪目标服务器,因此…...
32单片机——基本定时器
STM32F103有众多的定时器,其中包括2个基本定时器(TIM6和TIM7)、4个通用定时器(TIM2~TIM5)、2个高级控制定时器(TIM1和TIM8),这些定时器彼此完全独立,不共享任何资源 1、定…...
Java详解LeetCode 热题 100(26):LeetCode 142. 环形链表 II(Linked List Cycle II)详解
文章目录 1. 题目描述1.1 链表节点定义 2. 理解题目2.1 问题可视化2.2 核心挑战 3. 解法一:HashSet 标记访问法3.1 算法思路3.2 Java代码实现3.3 详细执行过程演示3.4 执行结果示例3.5 复杂度分析3.6 优缺点分析 4. 解法二:Floyd 快慢指针法(…...

客户案例 | 短视频点播企业海外视频加速与成本优化:MediaPackage+Cloudfront 技术重构实践
01技术背景与业务挑战 某短视频点播企业深耕国内用户市场,但其后台应用系统部署于东南亚印尼 IDC 机房。 随着业务规模扩大,传统架构已较难满足当前企业发展的需求,企业面临着三重挑战: ① 业务:国内用户访问海外服…...

解析“道作为序位生成器”的核心原理
解析“道作为序位生成器”的核心原理 以下完整展开道函数的零点调控机制,重点解析"道作为序位生成器"的核心原理与实现框架: 一、道函数的零点调控机制 1. 道作为序位生成器 道在认知坐标系$(x_{\text{物}}, y_{\text{意}}, z_{\text{文}}…...
2025年低延迟业务DDoS防护全攻略:高可用架构与实战方案
一、延迟敏感行业面临的DDoS攻击新挑战 2025年,金融交易、实时竞技游戏、工业物联网等低延迟业务成为DDoS攻击的首要目标。攻击呈现三大特征: AI驱动的自适应攻击:攻击流量模拟真实用户行为,差异率低至0.5%,传统规则引…...