WebUI 自动化测试框架搭建详解

  • 📢专注于分享软件测试干货内容,欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正!
  • 📢交流讨论:欢迎加入我们一起学习!
  • 📢资源分享:耗时200+小时精选的「软件测试」资料包
  • 📢 最困难的时候,也就是我们离成功不远的时候!

目录

    • 01、总体需求
    • 02、详细设计
    • 03、框架设计
    • 04、预期结果
    • 05、特别说明
    • 06、第一个WebUI自动化测试程序
    • 最后

01、总体需求

🎯 1.1:实现目的

基于BS架构,模拟用户(鼠标、键盘)操作,达到快速、重复执行测试用例;

便于回归测试,快速覆盖主线用例或功能;

线上或线下巡检测试,结合持续集成,及时发现运行环境存在的问题;

提升个人自动化测试技术能力,为业务提供强有力的测试手段。

🎯 1.2:功能需求

基于Unittest,封装、调用和组织所有的测试用例,进行批量或指定用例运行;

支持邮件服务,可添加任意团队成员邮箱,及时通知团队成员自动化运行结果;

支持log日志,保存运行过程所有或需要记录的数据;

支持HTML测试报告,直观展示测试结果和数据;

支持用例设计和测试结果分离,便于数据管理;

支持Json、conf、excel等配置文件读取,提供灵活的配置文件操作方法;

支持用户登录封装,后续所有的用例登录公用一个方法;

支持任意修改HTMLTestRuner,可定制测试报告模板;

支持测试报告多语言(英文和中文);

支持截图功能;

支持Jenkins持续集成。

🎯 1.3:其他需求

适用所有bs架构自动化测试;

模块化设计,项目框架形式组织代码;

公共方法封装,统一调用;

数据和结果分开,清晰明了;

支持邮件自定义;

代码注释清晰。

🎯 1.4:适用人员

有一定测试基础的软件测试人员;

有一定的代码(Python/Java)功底;

致力于学习web UI自动化测试的所有人员。

02、详细设计

🎯2. 1:需求分析

对 实现需求 进行详细分析,主要有下:


🎯 2.2:技术栈

03、框架设计


🎯 3.1:框架说明


🎯3. 2:框架执行流程

04、预期结果

🎯4. 1:测试过程log日志

在这里插入图片描述
🎯4. 2:测试报告html格式

🎯4. 3:测试报告邮件格式

05、特别说明

代码基本完成,如果有好的建议,可交流学习心得。

06、第一个WebUI自动化测试程序

在开始自动化框架搭建之前,我们先写一个简单的自动化测试脚本,来体会一下什么是web UI自动化测试,以及元素的基本操作,为后续的框架搭建鉴定基础。

🎯6. 1:Selenium基本理论

6.1.1 Selenium安装

直接打开cmd窗口,输入以下命令在线安装:


安装完后,在cmd窗口中输入以下命令,可以看到selenium已经安装了


  • 安装完后,在cmd窗口中输入以下命令,可以看到selenium已经安装了

6.1.2 WebDriverAPI

selenium提供了很多的WebDriverAPI,可以来进行:

  • 元素的识别、定位

  • 元素的单击、双击

  • 滚动条的拖动

  • 浏览器控制如窗口大小、前进后退、刷新、表单切换、多窗口切换、文件双传下载、cookie操作、验证码等等

  • 详情请参考以下:

    • 元素定位:https://blog.csdn.net/NoamaNelson/article/details/103022630

    • 浏览器控制(1):
      https://blog.csdn.net/NoamaNelson/article/details/103022776

    • 浏览器控制(2):
      https://blog.csdn.net/NoamaNelson/article/details/103022919

🎯6. 2:浏览器驱动安装

要想使用selenium来操作浏览器上的元素,必须安装浏览器驱动;

这个要根据具体的浏览器版本来定义;

本文使用的是Chrome浏览器,版本为88.0.4324.182(正式版本) (32 位);

6.2.1 Chromedriver下载

下载地址:

https://blog.csdn.net/NoamaNelson/article/details/107663868


6.2.2Chromedriver安装

下载下来后是一个chromedriver.exe,如果是w7系统需要把chromedriver.exe放在chrome浏览器的安装目录,然后在系统环境变量中加入chrome浏览器的安装目录即可;如果是w10系统,需要chromedriver.exe放在Python的安装目录即可,如本文是:


🎯6. 3:代码设计思路

6.3.1pycharm新建脚本

打开之前创建的项目【Automated-UITest-demo】,在项目上右键,新建python文件即可,这里新建一个名为test_baidu的python文件



创建完后,如下多了一个test_baidu的py文件


6.3.2自动化需求

这里我们做以下UI自动化测试:

1、自动打开chrome浏览器

2、输入百度网址

3、打开百度首页,输入helloworld

4、最大化浏览器窗口

5、搜索helloworld.并回车

6、浏览器窗口大小缩小为640*480

7、先进行浏览器后退,再次输入csdn进行搜索

8、清空输入的内容

9、判断是否进入csdn官网

6.3.3需求分析


以上方法具体使用,参考【1.2 WebDriverAPI】

6.3.4元素定位

以上需求已经搞清楚了,那么接下来要进行元素定位,这里大概可以对需求再拆解下,需要哪些元素?


那如何定位元素,知道使用哪种定位方式?

A、我们打开百度首页,然后按【F12】打开浏览器的调试模式


B、点击调试模式窗口左上角的小三角


D、点击一下即可,然后看到搜索输入框的元素属性,即要使用的元素定位方法


🎯6. 4:代码实现

6.4.1包/模块的引入

打开刚才新建的test_baidu.py文件

然后输入以下内容:



6.4.2打开百度



6.4.3定位搜索框输入helloworld,窗口最大化



6.4.4窗口缩小为640*480



6.4.5窗口刷新



6.4.6清空输入内容


6.4.7进入csdn官网并判断


6.4.8调用方法


🎯6. 5:完整源码



最后

如果你想学习自动化测试,那么下面这套视频应该会帮到你很多

如何逼自己1个月学完自动化测试,学完即就业,小白也能信手拈来,拿走不谢,允许白嫖....

最后我这里给你们分享一下我所积累和整理的一些文档和学习资料,有需要直接领取就可以了!


以上内容,对于软件测试的朋友来说应该是最全面最完整的备战仓库了,为了更好地整理每个模块,我也参考了很多网上的优质博文和项目,力求不漏掉每一个知识点,很多朋友靠着这些内容进行复习,拿到了BATJ等大厂的offer,这个仓库也已经帮助了很多的软件测试的学习者,希望也能帮助到你。

​​

​​​​

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Nginx-基础-基础配置(Server,Location语法,匹配优先级,rewrite)

请求定位(Server模块) nginx有两层指令来匹配请求 URL : 第一个层次是 server 指令,它通过域名、ip和端口来做第一层级匹配,当找到匹配的 server 后就进入此 server 的 location 匹配。第二个层次是location指令,它通过请求uri来…

“谐波”分析治理,电能质量在线监测

安科瑞 崔丽洁 摘要:在国家鼓励半导体材料国产化的政策导向下,本土半导体材料厂商不断提升半导体产品技术水平和研发能力,逐渐打破了国外半导体厂商的垄断格局,推进中国半导体材料国产化进程,促进中国半导体行业的发展…

ssm826基于ssm的电影评论系统+vue

ssm826基于ssm的电影评论系统vue 交流学习 ​​​​​​​ 演示 项目功能演示: ————————————————

C语言-for循环入门代码

#include <stdio.h>int main() {int count;for (count 0; count < 10; count){printf("1\n");}system("pause");return 0; }1 1 1 1 1 1 1 1 1 1 请按任意键继续. . .灵活的for循环 死循环 while(1) {... }#include <stdio.h> int main(…

【ArcGIS Pro微课1000例】0030:ArcGIS Pro中自带晕渲地貌工具的妙用

在ArcGIS中,制作地貌晕渲效果通常的做法是先制作山体阴影效果,然后叠加在DEM的下面,再改变DEM的透明度来实现。而在ArcGIS Pro中自带了效果显著的晕渲地貌工具。 文章目录 一、晕渲地貌工具1. 符号系统2. 栅格函数二、山体阴影效果1. 工具箱2. 栅格函数打开ArcGIS Pro3.0,加…

对红黑树的理解与实现(C++实现)

认识红黑树 在看到此篇文章之前最好还是先了解一下左右旋也就是AVL树的插入数据该如何处理。AVL树的插入详解-CSDN博客 红黑树&#xff0c;也属于是一种二叉搜索树&#xff0c;但在每个结点上增加一个存储位表示结点的颜色&#xff0c;可以是红色&#xff08;red&#xff09;…

基于ssm+vue协同过滤算法的电影推荐系统

基于ssmvue协同过滤算法的电影推荐系统 摘要 电影推荐系统在信息技术发展的背景下日益成为研究的焦点&#xff0c;本研究基于SSM&#xff08;Spring SpringMVC MyBatis&#xff09;框架与Vue.js技术&#xff0c;以协同过滤算法为核心&#xff0c;旨在构建一种高效、准确的电影…

第28章_mysql缓存策略

文章目录 MySQL缓存方案目的分析缓存层作用举例 缓存方案选择场景分析 提升MySQL访问性能的方式MySQL主从复制读写分离连接池异步连接 缓存方案缓存和MySQL一致性状态分析制定读写策略 同步方案canalgo-mysql-transfer 缓存方案的故障问题及解决缓存穿透缓存击穿缓存雪崩缓存方…

nodejs express vue uniapp电影购票系统源码

开发技术&#xff1a; node.js&#xff0c;vscode&#xff0c;HBuilder X express vue elementui uniapp 功能介绍&#xff1a; 用户端&#xff1a; 登录注册 首页显示搜索电影&#xff0c;轮播图&#xff0c;电影分类&#xff0c;最近上架电影 点击电影进入电影详情&am…

MySQL(15):存储过程与函数

存储过程概述 含义&#xff1a; 存储过程的英文是 Stored Procedure 。它的思想很简单&#xff0c;就是一组经过 预先编译 的 SQL 语句的封装。 执行过程&#xff1a; 存储过程预先存储在 MySQL 服务器上&#xff0c;需要执行的时候&#xff0c;客户端只需要向服务器端发出调用…

Obsidian同步技巧

Obsidian介绍 Obsidian支持Markdown语法&#xff0c;所见即所得。 软件支持多仓库功能&#xff0c;支持笔记文件夹和分层文件夹&#xff0c;等功能。 值得一提的是&#xff0c;软件的笔记同步功能需要付费。 同步技巧 官方同步方法 若资金充足&#xff0c;则可在Obsidian官网…

Django(四、路由层)

文章目录 一、路由层1.路由匹配url方法第一个是参数 的正则表达式 二、正则无名分组与有名分组无名分组有名分组 三、反向解析1.概念无名分组动态路由解析有名分组动态路由解析 四、路由分发为什么要用路由分发&#xff1f; 1.总路由分发配置名称空间 五、伪静态的概念六、虚拟…

使用Jmeter进行http接口性能测试

在进行网页或应用程序后台接口开发时&#xff0c;一般要及时测试开发的接口能否正确接收和返回数据&#xff0c;对于单次测试&#xff0c;Postman插件是个不错的Http请求模拟工具。 但是Postman只能模拟单客户端的单次请求&#xff0c;而对于模拟多用户并发等性能测试&#xf…

【Java】集合(二)Set

1.Set接口基本介绍 无序:存取顺序不一致不重复:可以去除重复无索引:没有带索引的方法&#xff0c;所以不能使用普通for循环遍历&#xff0c;也不能通过索引来获取元素 2.Set集合的实现类 HashSet:无序、不重复、无索引LinkedHashSet: 有序、不重复、无索引TreeSet: 可排序、不…

二维码智慧门牌管理系统升级解决方案:数据可视化助力运营精准决策

文章目录 前言一、升级版二维码智慧门牌管理系统的特点二、数据可视化助力运营精准决策 前言 随着科技的不断进步&#xff0c;传统的门牌管理系统已经无法满足现代社会的需求。为了提高管理效率&#xff0c;减少人力成本&#xff0c;我们引入了升级版的二维码智慧门牌管理系统…

同城服务如何引流和推广 同城小程序制作

客观原因线下实体店经营变得很艰难&#xff0c;而抖音推出的同城号功能&#xff0c;为许多商家带来了新的生机。抖音同城号的操作很简单&#xff0c;只需在短视频发布时打开同城号&#xff0c;短视频将被投入到同城流量池中&#xff0c;可以让位置附近的用户看到&#xff0c;线…

AttributeError: module ‘matplotlib‘ has no attribute ‘get_data_path‘

【报错】使用 AutoDL 下 Notebook 调用 matplotlib 时遇到 AttributeError: module matplotlib has no attribute get_data_path 报错&#xff1a; --------------------------------------------------------------------------- AttributeError …

C语言ZZULIOJ1148:组合三位数之一

题目描述 把1、2、3、4、5、6、7、8、9组合成3个3位数&#xff0c;要求每个数字仅使用一次&#xff0c;使每个3位数均为完全平方数。按从小到大的顺序输出这三个三位数。 输入:无 输出:按从小到大的顺序输出这三个三位数&#xff0c;由空格隔开。输出占一行。 提示 若一个数能表…

No192.精选前端面试题,享受每天的挑战和学习

🤍 前端开发工程师(主业)、技术博主(副业)、已过CET6 🍨 阿珊和她的猫_CSDN个人主页 🕠 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 🍚 蓝桥云课签约作者、已在蓝桥云课上架的前后端实战课程《Vue.js 和 Egg.js 开发企业级健康管理项目》、《带你从入…

2017年计网408

第33题 假设 OSI 参考模型的应用层欲发送 400B 的数据 (无拆分), 除物理层和应用层之外, 其他各层在封装 PDU 时均引入 20 B 的额外开销, 则应用层数据传输效率约为( )A. 80%B. 83%C. 87%D. 91% 本题考察有关数据包逐层封装的相关概念。我们来一起分析一下。 这是要求大家必须…