Web自动化测试框架-PO模式

 🔥 交流讨论:欢迎加入我们一起学习!

🔥 资源分享耗时200+小时精选的「软件测试」资料包

🔥 教程推荐:火遍全网的《软件测试》教程  

📢欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正!

Web自动化测试框架(WebTestFramework)是基于Selenium框架且采用PageObject设计模式进行二次开发形成的框架。 
一、适用范围:传统Web功能自动化测试、H5功能自动化测试。 
二、兼容性:建议使用火狐或谷歌浏览器,因为Selenium与其兼容性最好。 
三、框架改进亮点(比Selenium框架优的地方):

1、 采用PageObject设计模式,将某个页面的所有元素(包含控件)属性及元素操作封装在1个Class里面,如下所示: 
这里写图片描述

这样做的目的是为了解耦,即测试代码与被测页面对象代码分离,后面若页面元素发生了变化,只需要修改被测页面对象代码(即上述Class文件)而不需要修改测试代码,这样大大减小了后期因页面变化导致脚本或用例维护的成本。 
下面展示的测试代码片段中未用到任何页面元素对象: 
这里写图片描述

2、 采用XPath策略来寻找页面元素,而不建议使用Name、Link等方式来寻找。因为当页面元素的Name、Link发生了变化,测试代码(测试用例)就无法执行下去或执行过程中不稳定。若采用XPath,只要页面元素所在区域未发生变化,而Name、Link等发生了改变,测试代码基本不会受影响,代码如下所示: 
这里写图片描述

声明:一般XPath是基于CSS样式来做的,但CSS-Style改变的需求或可能性不是很大,换句话说,这样的变动周期较长;若想“以不变应万变”, 使用DOM元素的ID进行定位,这种方式的好处是不受元素所在位置、以及所应用的样式的影响。

3.将页面元素属性信息与代码分离,即与被测对象代码分离,这样做的目的也是为了进一步降低后续因页面变化带来的维护成本,即当页面发生改变时,只需要修改对应页面中XML配置文件信息,如下所示: 
这里写图片描述

个人心得: 
若希望基于Selenium框架二次开发的框架更加易于扩展,可以尽量少用Selenium提供的API,可以使用大量JS注入的方式来进行界面元素操作!

最后我邀请你进入我们的【软件测试学习交流群:785128166】, 大家可以一起探讨交流软件测试,共同学习软件测试技术、面试等软件测试方方面面,还会有免费直播课,收获更多测试技巧,我们一起进阶Python自动化测试/测试开发,走向高薪之路

作为一个软件测试的过来人,我想尽自己最大的努力,帮助每一个伙伴都能顺利找到工作。所以我整理了下面这份资源,现在免费分享给大家,有需要的小伙伴可以关注【公众号:程序员二黑】自提!

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

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

相关文章

Python接口自动化之cookie、session应用!

以下介绍cookie、session原理及在接口自动化中的应用。 HTTP 协议是一种无状态协议,即每次服务端接收到客户端的请求时,都是一个全新的请求,服务器并不知道客户端的历史请求记录;Session 和 Cookie 的主要目的就是为了弥补 HTTP 的…

L2-002 链表去重(Java)

给定一个带整数键值的链表 L,你需要把其中绝对值重复的键值结点删掉。即对每个键值 K,只有第一个绝对值等于 K 的结点被保留。同时,所有被删除的结点须被保存在另一个链表上。例如给定 L 为 21→-15→-15→-7→15,你需要输出去重后…

对列表的元素进行验证

摘要:开发中经常需要校验用户提交的值是否满足要求,Valid可用于方法参数、返回值等的验证,但是对于参数为列表时无效,此处记录几种对列表进行验证的方法 Valid 注解通常用于验证单个对象的字段,而不是整个列表。仅添加…

NetSuite Mass Update 批量更新功能

NetSuite中有一个小而精的便捷功能,但是也是一个很容易在实践中被大家遗忘的隐藏功能,就是Mass Update批量更新,在此想和各位分享一下~该功能主要是可以帮助用户快速将符合固定标准的记录中的单个/多个字段直接进行批量更新。如果…

快速批量将图片变成圆角怎么弄?教你一键将图片批量加圆角

在我们日常工作中,在设计图片的时候会要求将直角变成圆角,那么为什么要这么做呢?首先从圆角的设计语言上来说说,圆角看起来很现代,传达给人的感觉是温和友善的,被广泛的应用在产品中的图标、按钮等地方。而…

旷视IPC网络摄像机RTSP地址规则

主码流:rtsp://10.231.20.55/live?profileProfile_0000 子码流:rtsp://10.231.20.55/live?profileProfile_0001 三码流:rtsp://10.231.20.55/live?profileProfile_0002 带用户名密码格式,主码流:rtsp://admin:pw…

OJ习题之——圆括号编码

圆括号编码 1.题目描述2.完整代码3.图例演示 1.题目描述 题目描述 令Ss1 s2 …sn是一个规则的圆括号字符串。S以2种不同形式编码: (1)用一个整数序列Pp1 p2 … pn编码,pi代表在S中第i个右圆括号的左圆括号数量。(记为…

检测和处理异常之封装内建函数

​我们现在给出一个交互操作的例子 - 从最基本的错误检测开始, 然后逐步改进它, 增强代码的健壮性. 这里的问题是把一个用字符串表示的数值转换 为正确的数值表示形式, 而且在过程中要检测并处理可能的错误. float() 内建函数的基本作用是把任意一个数值类型转换为一个浮点数…

代码第二十四天-寻找旋转排序数组中的最小值Ⅱ

寻找旋转排序数组中的最小值Ⅱ 题目要求 解题思路 二分法 当遇到两个left、right两个位置值相同时候&#xff0c;可以选择将 right right-1 代码 class Solution:def findMin(self, nums: List[int]) -> int:left,right0,len(nums)-1while left<right:mid(leftright…

HarmonyOS—配置编译构建信息

在进行应用/服务的编译构建前&#xff0c;需要对工程和编译构建的Module进行设置。API Version 9、API Version 8与API Version 4~7的构建体系不同&#xff0c;因此在设置编译构建信息时也存在差异&#xff1a; API Version 9&#xff1a;需要对构建配置文件、构建脚本、应用依…

一文读懂HDMI的演变-从HDMI1.0到HDMI2.1(建议收藏)

HDMI&#xff0c;全称为&#xff08;High Definition Multimedia Interface&#xff09;高清多媒体接口&#xff0c;主要用于传输高清音视频信号。 HDMI System HDMI系统包括HDMI的source和HDMI的sink, 其中source 是源端&#xff0c;即信号的来源&#xff1b;Sink的接收端&a…

Keepalived群集

目录 一、Keepalive基础 1.1 vrrp技术 1.2 VRRP相关技术 1.3.VRRP工作过程 1.4.Keeplived、VRRP及其工作原理 1.5.Keepalived体系主要模块及其作用 1.6.配置LVSKeepalived高可用群集 配置NFS服务器192.168.52.110 192.168.52.120web1服务器 192.168.52.130web2服务器 配…

哇!!!!这个个人博客好好看!!!

做一个个人博客第一步该怎么做&#xff1f; 好多零基础的同学们不知道怎么迈出第一步。 那么&#xff0c;就找一个现成的模板学一学呗&#xff0c;毕竟我们是高贵的Ctrl c v 工程师。 但是这样也有个问题&#xff0c;那就是&#xff0c;那些模板都&#xff0c;太&#xff01;…

前端算法之归并排序

5、归并排序&#xff08;Merge Sort&#xff09; 归并排序是建立在归并操作上的一种有效的排序算法。该算法是采用分治法&#xff08;Divide and Conquer&#xff09;的一个非常典型的应用。将已有序的子序列合并&#xff0c;得到完全有序的序列&#xff1b;即先使每个子序列有…

C++性能优化 —— TCMalloc的原理与使用

一、TCMalloc简介 1、TCMalloc简介 TCMalloc(Thread-Caching Malloc&#xff0c;线程缓存的malloc&#xff09;是Google开发的内存分配算法库&#xff0c;最初作为Google性能工具库 perftools 的一部分&#xff0c;提供高效的多线程内存管理实现&#xff0c;用于替代操作系统…

基于AFDPF主动频率偏移法的孤岛检测Simulink仿真

目录 1.课题概述 2.系统仿真结果 3.核心程序与模型 4.系统原理简介 5.完整工程文件 1.课题概述 基于AFDPF主动频率偏移法的孤岛检测Simulink仿真。 2.系统仿真结果 3.核心程序与模型 版本&#xff1a;MATLAB2022a 36 4.系统原理简介 在分布式发电系统中&#xff0c;孤…

express基础

express express介绍 官网传送门基于 Node.js 平台&#xff0c;快速、开放、极简的 Web 开发框架express特点 Web 应用 Express 是一个基于 Node.js 平台的极简、灵活的 web 应用开发框架&#xff0c;它提供一系列强大的特性&#xff0c;帮助你创建各种 Web 和移动设备应用。…

指针的深入解读笔记

指针是什么 指针是指向内存单元的编号(地址),可以快速访问地址,加快程序运行速度. 在指针中一般用到两个操作符: * 解引用操作符 也是定义指针时候的操作符 int *p;//定义一个类型为 int 的 指针 *p 0;解引用p指向的地址 并且赋值为0 & 取地址操作符 in…

详讲Spring的面向切片编程(AOP)二

个人名片&#xff1a; &#x1f43c;作者简介&#xff1a;一名大三在校生&#xff0c;喜欢AI编程&#x1f38b; &#x1f43b;‍❄️个人主页&#x1f947;&#xff1a;落798. &#x1f43c;个人WeChat&#xff1a;hmmwx53 &#x1f54a;️系列专栏&#xff1a;&#x1f5bc;️…

3月7日代码随想录组合及优化

77.组合 77. 组合 - 力扣&#xff08;LeetCode&#xff09; 给定两个整数 n 和 k&#xff0c;返回范围 [1, n] 中所有可能的 k 个数的组合。 你可以按 任何顺序 返回答案。 示例 1&#xff1a; 输入&#xff1a;n 4, k 2 输出&#xff1a; [[2,4],[3,4],[2,3],[1,2],[1,3…