【自动化测试】基于Selenium + Python的web自动化框架

一、什么是Selenium?

Selenium是一个基于浏览器的自动化工具,她提供了一种跨平台、跨浏览器的端到端的web自动化解决方案。Selenium主要包括三部分:Selenium IDE、Selenium WebDriver 和Selenium Grid:

 1、Selenium IDE:Firefox的一个扩展,它可以进行录制回放,并可以把录制的操作以多种语言(例如java,python等)的形式导出成测试用例。

 2、Selenium WebDriver:提供Web自动化所需的API,主要用作浏览器控制、页面元素选择和调试。不同的浏览器需要不同的WebDriver。

 3、Selenium Grid:提供了在不同机器的不同浏览器上运行selenium测试的能力

本文使用Python结合Selenium WebDriver库进行自动化测试框架的搭建。

二、自动化测试框架

一个典型的自动化测试框架一般包括用例管理模块、自动化执行控制器、报表生成模块和log模块,这些模块相辅相成。

1.png

接下来介绍一下各模块的逻辑单元:

1、用例管理模块

 用例管理模块包括新增、修改、删除等操作单元,这些单元又会涉及到用例书写模式,测试数据库的管理、可复用库等。

2、自动化控制器

   控制器是自动化用例执行的组织模块,主要是负责以什么方法执行我们的测试用例

3、报表生成模块

   主要负责执行用例后的生成报告,一般以HTML格式居多,信息主要是用例执行情况。另外还可以配置发送邮件功能。

4、log模块

   主要用来记录用例执行情况,以便于高效的调查用例失败信息以及追踪用例执行情况。
现在我也找了很多测试的朋友,做了一个分享技术的交流群,共享了很多我们收集的技术文档和视频教程。
如果你不想再体验自学时找不到资源,没人解答问题,坚持几天便放弃的感受
可以加入我们一起交流。而且还有很多在自动化,性能,安全,测试开发等等方面有一定建树的技术大牛
分享他们的经验,还会分享很多直播讲座和技术沙龙
可以免费学习!划重点!开源的!!!
qq群号:110685036

三、自动化框架的设计和实现

1、需求分析

首先我们的测试对象是一个web平台,基于此平台设计的框架要包含测试用例管理、测试执行控制器、测试报告以及测试日志的生成。

2、设计和实现

   1)页面管理

假设测试web对象为一个典型单页面应用,所以我们采用页面模式。页面模式

是页面与测试用例之间的纽带,它将每个页面抽象成一个单独的类,为测试用例提供页面元素的定位和操作。

   BaseClass作为父类只包含driver成员变量,用来标识Selenium中的WebDriver,以便在子类中定位页面元素。LoginClass和PageClass作为子类,可以提供页面元素的定位和操作方法。比如登录页面。

2.png

从页面看,需要操作的元素分别为,登录用户名、密码、下次自动登录和登录按钮,具体实现代码如下:

页面父类BaseClass.py

3.png

LoginClass继承自BaseClass,并进行登录的元素定位以及操作实现。代码中定位了username和password,并添加了设置用户名和密码的操作。

4.png

2)公共库模块

公共库模块是为创建测试用例服务的,主要包括常量、公共函数、日志、报告等。

Common.py

5.png

测试用例信息类用来标识测试用例,并且包括执行用例、执行结果信息,主要包括以下字段。

6.png

日志主要用来记录测试用例执行步骤及产生的错误信息,不同的信息有不同的日志级别,比如Information,Warning,Critical和Debug。由于每个测试用例产生的日志条目比较少,所以在测试框架中只利用了最高级别的日志打印,即Debug级别,该级别也会将其他所有的日志级别的信息同样打印出来。在具体的实现中引用了Python标准库中的logging类库,以便更方便的控制日志输出。

   3)测试用例仓库

用例仓库主要用来组织自动化测试用例。每条测试用例都被抽象成一个独立的类,并且均继承自unittest.TestCase类。 Python中的unittest库提供了丰富的测试框架支持,包括测试用例的setUp和tearDown方法,在实现用例的过程中可以重写。依托页面管理和公共库模块实现的页面方法和公共函数,每一个测试用例脚本的书写都会非常清晰简洁。

7.png

从这个测试用例中,我们可以看到

Setup中定义了执行测试用例前的一些实例化工作

tearDown对执行完测试做了清理和写日志文件工作

测试步骤、测试数据和测试检查点非常清晰,易修改(比如用户名密码)

日志级别仅有Debug,所以写日志仅需用同一Log方法

3)用例执行模块

执行模块主要用来控制测试用例脚本的批量执行,形成一个测试集。用例的执行引用了Python标准库中的subprocess来执行nosetests的shell命令,从而执行给定测试用例集中的用例。测试用例集是一个简单的纯文本文件,实现过程中利用了.txt文件testcases.txt

8.png

用例前没有“#“标记的测试用例脚本会被执行,而有”#“标记的则会被忽略,这样可以很方便的控制测试集的执行,当然也可以创建不同的文件来执行不同的测试集。 

四、需要改进的模块

对于现有实现的测试框架,已经可以满足web对象的自动化需求,但还是有些可以改进提高的地方,比如:

1)部分用例可以尝试数据驱动

2)二次封装selenium的By函数,以便更高效定位元素

3)没有进行持续化集成

五、总结

基于Selenium实现的web自动化框架不仅轻量级而且灵活,可以快速的开发自动化测试用例,结合本篇的框架设计和一些好的实践,希望对大家以后的web自动化框架的设计和实现有所帮助。

今天的分享就到此结束了, 如果文章对你有帮助,记得点赞,收藏,加关注。会不定期分享一些干货哦...... 

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

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

相关文章

如何通过SK集成chatGPT实现DotNet项目工程化?

智能助手服务 以下案例将讲解如何实现天气插件 当前文档对应src/assistant/Chat.SemanticServer项目 首先我们介绍一下Chat.SemanticServer的技术架构 SemanticKernel 是什么? Semantic Kernel是一个SDK,它将OpenAI、Azure OpenAI和Hugging Face等大…

MyBatis--多案例让你熟练使用CRUD操作

目录 一、前期准备 二、两种实现CRUD方式 三、增加数据(INSERT) 四、删除数据(DELETE) 五、查询数据(SELECT) 六、更新数据(UPDATE) 一、前期准备 1.创建maven项目并在pom文件…

【计算机网络笔记】计算机网络性能(1)——速率、带宽、延迟

系列文章目录 什么是计算机网络? 什么是网络协议? 计算机网络的结构 数据交换之电路交换 数据交换之报文交换和分组交换 分组交换 vs 电路交换 系列文章目录速率带宽延迟/时延(delay或latency) 下面介绍一些计算机网络中常用的性能指标。在本篇中涉及速…

ELK架构Logstash的相关插件:grok、multiline、mutate、date的详细介绍

文章目录 1. grok (正则捕获插件)1.1 作用1.2 正则表达式的类型1.2.1 内置正则表达式1.2.2 自定义正则表达式 2. mutate (数据修改插件)2.1 作用2.2 常见配置选项2.3 应用实例 3. multiline (多行合并插件)3.1 作用3.2 常用配置项及示例3.2.1…

Looper分析

Looper分析 在 Handler 机制中,Looper 的作用是提供了一个消息循环 ( message loop ) 的机制,用于处理和分发消息。 Looper 是一个线程局部的对象,每个线程只能有一个 Looper 对象。它通过一个无限循环来不断地从消息队列中取出消息&#x…

Linux搭建文件服务器

搭建简单文件服务器 基于centos7.9搭建http文件服务器基于centos7.9搭建nginx文件服务器基于ubuntu2204搭建http文件服务器 IP环境192.168.200.100VMware17 基于centos7.9搭建http文件服务器 安装httpd [rootlocalhost ~]# yum install -y httpd关闭防火墙以及selinux [roo…

【软考-中级】系统集成项目管理工程师 【15 信息 (文档) 和配置管理】

持续更新。。。。。。。。。。。。。。。 【第十五章】信息(文档)和配置管理 知识精讲考点 1:软件文档一般分为三类:开发文档、产品文档、管理文档。考点 2:文档的质量可以分为四级:考点 3:配置管考点 4:考点 5:考点6:考点 7:配置项版本号:考点 8:考点9…

36张图详解网络基础知识

下午好,我的网工朋友。 在网工这行,只要是面试,一般都难逃网络协议相关的问题吧。 不管是OSI还是TCP/IP,这都是非常重要、基础的知识,很多知识点都是以它们为基础去串联的。 作为网络世界的底层技术,掌握…

Docker安装ES7.14和Kibana7.14(无账号密码)

一、Docker安装ES7.14.0 1、下载镜像 docker pull elasticsearch:7.14.0 2、docker安装7.14.0 mkdir -p /usr/local/elasticsearch/config mkdir -p /usr/local/elasticsearch/data chmod 777 -R /usr/local/elasticsearch/ echo "http.host: 0.0.0.0" >> /u…

Java 多线程案例

文章目录 1. 多线程案例1.1 单例模式1.2 阻塞式队列 2. 定时器3. 线程池 1. 多线程案例 1.1 单例模式 单例模式(Singleton Pattern)是一种常用的软件设计模式,该模式的主要目标是确保一个类只有一个实例,并提供一个全局访问点。…

关于网络协议的若干问题(五)

1、DH 算法会因为传输随机数被破解吗? 答:DH 算法的交换材料要分公钥部分和私钥部分,公钥部分和其他非对称加密一样,都是可以传输的,所以对于安全性是没有影响的,而且传输材料远比传输原始的公钥更加安全。…

Apache Jmeter测压工具快速入门

Jmeter测压工具快速入门 一、Jmeter介绍二、Jmeter On Mac2.1 下载2.2 安装2.2.1 环境配置2.2.2 初始化设置 2.3 测试2.3.1 创建JDBC Connection Configuration2.3.2 创建线程组2.3.3 创建JDBC Request2.3.4 创建结果监控2.3.5 运行结果 2.4 问题记录2.4.1 VM option UseG1GC异…

小程序技术在信创操作系统中的应用趋势:适配能力有哪些?

小程序技术在信创操作系统中的应用前景非常广阔,但也面临着一些挑战和问题。开发者需要积极应对这些挑战和问题,为信创操作系统的发展和推广做出贡献。同时,开发者也需要关注小程序技术在信创操作系统中的应用趋势,积极探索新的应…

视频剪辑SDK,实现高效的移动端视频编辑

为了满足企业对视频编辑的需求,美摄提供了iOS/Android端视频编辑SDK技术开发服务,帮助企业快速高效地制作高质量视频。本文将详细介绍美摄的视频编辑SDK的优势和特点,以及如何为企业提供技术解决方案。 随着智能手机的普及和移动互联网的发展…

Java实现业务异步的几种方案

背景: 在java中异步线程很重要,比如在业务流处理时,需要通知硬件设备,发短信通知用户,或者需要上传一些图片资源到其他服务器这种耗时的操作,在主线程里处理会阻塞整理流程,而且我们也不需要等…

Zookeeper集群 + Kafka集群的详细介绍与部署

文章目录 1. Zookeeper 概述1.1 简介1.2 Zookeeper的工作机制1.3 Zookeeper 主要特点1.4 Zookeeper 数据结构1.5 Zookeeper的相关应用场景1.5.1 统一命名服务1.5.2 统一配置管理1.5.3 统一集群管理1.5.4 服务器动态上下线1.5.5 软负载均衡 1.6 Zookeeper 选举机制1.6.1 第一次启…

Jmeter 之接口测试(http 接口测试)

基础知识储备 一、了解 jmeter 接口测试请求接口的原理 客户端 -- 发送一个请求动作 -- 服务器响应 -- 返回客户端 客户端 -- 发送一个请求动作 --jmeter 代理服务器 --- 服务器 --jmeter 代理服务器 -- 服务器 二、了解基础接口知识: 1、什么是接口&#xff1a…

uniapp 小程序优惠劵样式

先看效果图 上代码 <view class"coupon"><view class"tickets" v-for"(item,index) in 10" :key"item"><view class"l-tickets"><view class"name">10元优惠劵</view><view cl…

centos7 部署oracle完整教程(命令行)

centos7 部署oracle完整教程&#xff08;命令行&#xff09; 一. centos7安装oracle1.查看Swap分区空间&#xff08;不能小于2G&#xff09;2.修改CentOS系统标识 (由于Oracle默认不支持CentOS)2.1.删除CentOS Linux release 7.9.2009 (Core)&#xff08;快捷键dd&#xff09;&…

python爬取boss直聘数据(selenium+xpath)

文章目录 一、主要目标二、开发环境三、selenium安装和驱动下载四、主要思路五、代码展示和说明1、导入相关库2、启动浏览器3、搜索框定位创建csv文件招聘页面数据解析(XPATH)总代码效果展示 六、总结 一、主要目标 以boss直聘为目标网站&#xff0c;主要目的是爬取下图中的所…