全网最全,Selenium自动化测试POM模式总结(详细)

news2024/9/28 5:25:10

目录:导读

    • 前言
    • 一、Python编程入门到精通
    • 二、接口自动化项目实战
    • 三、Web自动化项目实战
    • 四、App自动化项目实战
    • 五、一线大厂简历
    • 六、测试开发DevOps体系
    • 七、常用自动化测试工具
    • 八、JMeter性能测试
    • 九、总结(尾部小惊喜)


前言

在UI自动化测试中,PO是目前最为主流,也是公认最佳的设计模式;
UI自动化测试最初是通过关键字驱动+数据驱动的形式来实现,然后升级到PO模式;

什么是关键字驱动?

简单而言,就是将Selenium常用功能进行二次封装
譬如:把查找元素、点击、输入等原生方法进行封装
特点:可以让不懂代码的测试人员也能做自动化测试,彻底地实现测试步骤、测试数据和程序的分离

关键字驱动 vs RF?

可以把关键字驱动对比用RF(Robot Framework)做的自动化测试,在RF GUI界面调用关键字,并传入参数即可完成一系列的元素操作;
而我们在Pycharm上完成关键字驱动也是相同道理,封装好Selenium常用方法,然后去调用关键字,不同页面传入不同的参数即可完成一系列的元素操作

什么是数据驱动?

固定的程序,固定的测试步骤,使用不同的数据进行测试【需要多组数据来测试】
将代码和数据进行分离,单纯由数据组成文件,再由文件来驱动关键字,最终实现整个自动化的流程

什么是关键字驱动+数据驱动?

读取数据,将固定格式的数据进行拼接【读取数据】
拼接后的内容作为关键字所需要的参数,进行传入【传入数据】
调用关键字,将执行结果和预期结果进行对比,从而获取单条测试用例执行是否通过的结果【执行关键字,断言结果】

关键字驱动+数据驱动是一种设计模式。

什么是PO模式?

PO模式是page object model的缩写,是一种设计模式

把待测页面当成一个页面对象,一般包含了元素对象的定位和元素操作方法,将页面对象和真实的网站页面一 一映射起来

比如一个登录页面,使用PO模式后,操作的步骤如下:
会先创建一个class,该class就是登录页面对象类;
类的属性:用户名输入框,密码输入框,登录按钮的webElenent;
类的方法:各种元素操作的方法;
方法里面会调用对象库层的二次封装Selenium的方法;
测试层从页面操作层调用操作方法,写成测试用例,这种模式可以做到定位元素与测试用例分离;
所以这样的设计理念就是PO模式;

PO模式的分层

PO模式可以把一个页面一般分为三层

对象库层:二次封装Selenium的方法
页面操作层(也称:逻辑层):封装页面的元素对象和元素操作
测试层(也称:业务层):多个页面操作完成一个业务测试,一般结合单元测试框架(unittest、pytest)来测试

分四层的

对象库层:二次封装Selenium的方法
页面层:封装页面的元素对象
操作层:封装页面的元素操作
测试层:多个页面操作完成一个业务测试

PO模式和关键字驱动+数据驱动有什么区别?(PO模式的原理)

升级到PO模式之后,首先将Selenium常用的功能,结合实际业务需要进行二次封装;封装的内容是完全贴合实际业务来实现的【封装Selenium】
将元素对象和元素操作进行整合【元素对象整合】
将对象库和测试代码分离,实现数据与代码分离【数据与代码分离】

PO模式给代码带来的优势

代码冗余明显降低:二次封装Selenium方法和提取公共方法,提高代码复用性

代码的阅读性明显提升:因为三层分级,将不同内容进行不同的封装,整体代码阅读性提升

代码维护性明显提升:UI测试中,页面若经常变动,代码的维护量随之增多;因为三层分级,我们只需要修改页面对象的代码,如元素对象或者操作对象的方法,不用修改测试用例的代码,也不影响测试用例的正常执行

降低代码耦合性

下面是我整理的2023年最全的软件测试工程师学习知识架构体系图

一、Python编程入门到精通

请添加图片描述

二、接口自动化项目实战

请添加图片描述

三、Web自动化项目实战

请添加图片描述

四、App自动化项目实战

请添加图片描述

五、一线大厂简历

请添加图片描述

六、测试开发DevOps体系

请添加图片描述

七、常用自动化测试工具

请添加图片描述

八、JMeter性能测试

请添加图片描述

九、总结(尾部小惊喜)

你的人生只有一次,无论前方是荆棘丛生还是坦途平庸,都要勇往直前,不断超越自己。每一分每一秒都要珍惜,把握好自己的时间,用汗水和努力去铸就辉煌的未来。行动起来,让未来的自己感谢今天拼搏的你!

每一次的付出,都会有不同的收获;每一份努力,都是你人生中的一笔财富。无论你走到哪里,都要保持对生活的热爱和对自己的信心,坚定不移地追逐梦想!

自律是成功之母,付出必有回报;只要你肯努力,就能创造未来,因为每个人都有无限的潜力。别停下脚步,继续前进,即使路途漫长艰辛,也不要放弃。坚持下去,你会发现成功就在不远处!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/688324.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Python+Selenium+Unittest 之selenium7--元素定位6-CSS定位1(定位所有、定位class、定位id、tag定位)

目录 一、CSS简介 二、 定位方式 三、实践操作 1、*(定位所有元素) 2、. (定位class属性) 3、#(定位id属性) 4、tag定位 一、CSS简介 CSS属于是一种计算机语言,主要是用来为结构化文档的外…

软件测试期末速成(背题家出列!)

文章目录 一、前言二、选择题(15 X 2)1、概述2、相关概念3、黑盒测试4、白盒测试5、单元测试6、集成测试7、系统测试8、自动化测试9、实用软件测试技术 三、判断题(10 X 1’)四、简答题(4 X 5)1、软件测试生…

一文学会Nginx做图片服务器

Nginx做图片服务器 前言: Nginx是一个高性能的HTTP和反向代理web服务器,以及负载均衡器。根据nginx是高性能的http服务器,因此可以用作图片服务器使用。 本案例是在docker安装nginx来操作的。 什么是Nginx? Nginx是一款高性能的Web服务器和反向代理服…

linux入门之浅谈shell及权限的概念

文章目录 目录 文章目录 一、shell命令以及运行原理 二、linux权限的概念 1.Linux权限管理 a.文件访问者的分类(人) b.文件类型和访问权限 1)文件类型 2)基本权限 3)文件权限值的表示方法 4)文件访问权限的相…

docker快速部署oracle19c、oracle12c,测试环境问题复现demo快速搭建笔记

Oracle 19c测试环境快速搭建 安装 # 下载镜像 19.3.0.0.0 docker pull registry.cn-hangzhou.aliyuncs.com/laowu/oracle:19c # 创建文件 mkdir -p /mymount/oracle19c/oradata # 授权,不授权会导致后面安装失败 chmod 777 /mymount/oracle19c/oradatadocker run …

01背包思路解析+代码

01背包 题目链接:01背包 思路:题目要求是获取背包能装的最大重量。一个物品有体积和重量两个属性。而当我们判断一个物品是否要放进背包,第一取决于他的体积是否足以放进背包,第二取决于他的重量是否足以让我们取出已经放入的一部…

buuctf 你有没有好好看网课? 解析

打开文件得到两个压缩包,第一个压缩包flag2需要密码,第二个压缩包flag3打开后在备注可以获得提示 使用arc爆破,得到6位数字密码 解压压缩包得到一个视频和文档 文档内容包含6个数字,结合视频猜测是关键信息藏在这两个时间节点上 …

XSS注入——DOM型XSS

DOM型xss XSS根据恶意脚本的传递方式可以分为3种,分别为反射型、存储型、DOM型,前面两种恶意脚本都会经过服务器端然后返回给客户端,相对DOM型来说比较好检测与防御,而DOM型不用将恶意脚本传输到服务器在返回客户端,这…

如何优化Nginx服务进程(详细教程)

目录 一、了解Nginx服务配置内容 ① 外框架 ② 内框架 ③ 三个主模块 二、Nginx服务进程 访问信息的组成 Web服务的监听配置 LNMP架构 三、Nginx优化 隐藏版本号 可以查询指定地址的服务信息 更改配置文件内容 检查语法错误 重启服务 再次查看版本号是否隐藏 自…

【qiankun】前端微服务踩坑记录-长期更新

目录 前言 1.Cannot GET /cooperation/board 场景: 分析 解决 2.Invalid options in vue.config.js:"css.requireModuleExtension" is not allowed 原因 解决 3.less版本升级导致除法写法未转换 原因 解决 4.主子应用样式隔离 场景 解决 5…

Java进阶必读书单及博客

java基础 Java核心技术 卷I:开发基础(原书第12版) Java核心技术 卷II:高级特性(原书第12版) JVM 《深入理解Java虚拟机(第3版)》 并发 《Java并发编程实战》 《Java并发编程的艺术》 数据库 《MySQL技术…

win下安装Nginx

安装Nginx 前言 本文演示win11下安装Nginx-1.24.0。本文旨在记录安装流程以及梳理安装配置过程中的一些容易出错的地方。 目录 文章目录 前言目录下载Nginx安装包配置环境变量配置Nginx设置报错日志路径设置Nginx的启动端口号 启动Nginx 下载Nginx安装包 前往Nginx官方下载…

FineReport学习1

聚合报表是指将多个子报表数据进行集中汇总、分析和呈现的报表,通常用于展示公司的整体数据情况。聚合报表可以帮助管理人员和决策者更全面、准确地了解公司在不同维度上的业务情况,便于对公司业务进行分析和决策。 决策报表则是指根据决策需求构建的针…

性能测试——银行核心业务系统性能测试

目录 前言: 测试内容 测试方法 注意事项 总结: 前言: 本文讨论的是基于字符终端型的银行核心业务系统。银行核心业务系统由于其复杂的业务流程,以及特殊的终端字符形式,与一般的B/S结构、C/S结构系统有较大的差异&am…

Vue3新特性全预览

目录 自定义Hook函数 介绍 示例 toRef和toRefs 介绍 代码示例 shallowReactive和shallowRef(不常用只做了解) readonly与shallowReadonly(不常用只做了解) toRaw与markRaw(不太常用只做了解) provide与inject 介绍 代码示例 ​编辑 响应式数据的判断 Composition Api的…

QML Canvas 元素(渐变和阴影)

作者: 一去、二三里 个人微信号: iwaleon 微信公众号: 高效程序员 经过前面的 Canvas 学习,我们可以很容易地使用 strokeStyle 和 fillStyle 来设置图形的边框色和填充色,例如:“green”、“black” 等。其实除了使用纯色之外,我们还可以使用一些渐变色,如果你想让图形…

基于matlab使用卡尔曼滤波器进行对象跟踪(附源码)

一、前言 此示例演示如何使用对象和函数来跟踪对象。 二、介绍 卡尔曼滤波器有许多用途,包括控制、导航、计算机视觉和时间序列计量经济学方面的应用。此示例说明了如何使用卡尔曼滤波器跟踪对象,并重点介绍三个重要功能: 预测物体的未来位置…

基于条件风险价值CVaR的微网动态定价与调度策略(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

人工智能(pytorch)搭建模型14-pytorch搭建Siamese Network模型(孪生网络),实现模型的训练与预测

大家好,我是微学AI,今天给大家介绍一下人工智能(pytorch)搭建模型14-pytorch搭建Siamese Network模型(孪生网络),实现模型的训练与预测。孪生网络是一种用于度量学习(Metric Learning)和比较学习(Compariso…

教学实训模块升级,助力应用型数据科学人才培养|ModelWhale 版本更新

初夏梅雨季,ModelWhale 迎来新一轮版本更新,多角度优化各领域用户的使用体验。 本次更新中,ModelWhale 主要进行了以下功能迭代: • 优化 课程作业布置(团队版✓ ) • 新增 课程作业关联至课件&#xff…