实用指南:基于Selenium+Python的web自动化测试框架

news/2025/10/4 16:00:15/文章来源:https://www.cnblogs.com/slgkaifa/p/19125675

实用指南:基于Selenium+Python的web自动化测试框架

一、什么是Selenium?

Python接口自动化测试零基础入门到精通(2025最新版)

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

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

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

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

本文将详细介绍如何运用Python结合Selenium WebDriver库搭建web自动化测试框架。

二、自动化测试框架

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

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

1、用例管理模块

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

2、自动化控制器

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

3、报表生成模块

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

4、log模块

主要用来记录用例执行情况,以便于高效的调查用例失败信息以及追踪用例执行情况。

三、自动化框架的设计和达成

1、需求分析

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

2、设计和实现

页面管理

假设测试web对象为一个典型单页面应用,所以我们采用页面模式。页面模式是页面与测试用例之间的纽带,它将每个页面抽象成一个单独的类,为测试用例提供页面元素的定位和操作。

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

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

页面父类BaseClass.py

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

公共库模块

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

Common.py

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

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

测试用例仓库

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

从这个测试用例中,我们能够看到

  • Setup中定义了执行测试用例前的一些实例化工作
  • tearDown对执行完测试做了清理和写日志文件工作
  • 测试步骤、测试数据和测试检查点非常清晰,易修改(比如用户名密码)
  • 日志级别仅有Debug,所以写日志仅需用同一Log手段

3、用例执行模块

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

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

四、需要改进的模块

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

  • 通过部分用例能够尝试数据驱动。
  • 二次封装selenium的By函数,以便更高效定位元素。
  • 没有进行持续化集成。

五、总结

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

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

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

相关文章

实施网站推广的最终目的是startup wordpress

HTML学习笔记 day one Chapter one 网站开发基础 1.2网站的基本架构 网站的基本要素:内容,页面,超链接 动态网页和静态网页的区别在于:动态网页会自动更新,后缀名是.asp或者.aspx;而静态网页不会自动更新&#xff0c…

南阳网站开发凡科网做网站教程

吴恩达《机器学习》学习笔记七——逻辑回归(二分类)代码一、无正则项的逻辑回归1.问题描述2.导入模块3.准备数据4.假设函数5.代价函数6.梯度下降7.拟合参数8.用训练集预测和验证9.寻找决策边界二、正则化逻辑回归1.准备数据2.特征映射3.正则化代价函数4.…

适合新手的PPT模板网站,简单操作但效果好!

你是不是也有过这样的经历?明天就要汇报了,今天还在对着空白PPT发呆,找遍全网模板不是收费就是丑到没法用,最后只能硬着头皮交差然后被老板怼?别慌,作为从业8年的PPT设计师,我今天就把压箱底的宝藏网站和私藏技…

2025多校冲刺CSP模拟赛2 总结

比赛:2025多校冲刺CSP模拟赛2 日期:\(25.10.04\),场地:\(\text{accoder}\),排名:\(45/137\) 估分:\(100+([0,100])+20+45=165+[0,100]\) 终分:\(100 + 55 + 20 + 75 =250\) 失分 今天的比赛真的太难了,\(T_2\…

pip list 可以查到某个包,但是,import某个包,出现 ModuleNotFoundError: No module named

pip list 可以查到某个包,但是,import某个包,出现 ModuleNotFoundError: No module named (segmamba) [root@ibiomed ~]# pip list | grep gen gensim 4.3.3 (segmamba) [root@ibiomed ~]# pytho…

无人机常用的几种飞行模式

无人机常用的几种飞行模式地址: https://www.bilibili.com/video/BV12u4y1d7n6本博客是博主个人学习时的一些记录,不保证是为原创,个别文章加入了转载的源地址,还有个别文章是汇总网上多份资料所成,在这之中也必有…

详细介绍:conda使用指南

详细介绍:conda使用指南pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", &q…

VMProtect 是什么

VMProtect 是什么VMProtect 是一种 软件保护工具(Software Protection / Code Obfuscation),主要用于防止程序被破解、逆向或篡改。开发者可以用它保护 Windows、macOS、Linux 等平台上的可执行程序。它的核心是 虚…

电影网站做静态是不是好一些北京网页设计公司兴田德润可以吗

题目链接 Solution 可以考虑到如果知道环内一点的身份,如果凶手在其中就查出来了,同时不会有危险. 那么对警察造成威胁的就是那些身份不明且不能从其他点转移过来的点. 那么大部答案就是缩完点之后入度为 \(0\) 的联通块数量. 但是,会有特殊情况: 如图,我们就只要查 \(2\) 或者…

自动驾驶中的传感器工艺56——USS(2)

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

探索 Docker/K8s 部署 MySQL 的创新实践与优化技巧 - 详解

探索 Docker/K8s 部署 MySQL 的创新实践与优化技巧 - 详解pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consola…

基于Registry搭建docker加速镜像服务

基于 Registry 搭建 Docker 加速镜像服务旨在解决 docker.io 网络访问不畅及多服务器拉取镜像时外网负载过重的问题。背景场景:docker.io网络访问不通畅,服务器难以拉取镜像 多个服务器拉取相同镜像时,外网连接负载…

mssql 无锁读取

无锁读取,无阻塞,速度快nolock 读未提交,产生脏读RCSI 开启RCSI,读取锁定数据 的最新提交版本 。无脏读,数据读一致性。

2025年四川大学计算机学院专硕考研经验分享

初试 总分:22408,360+ 时间规划(大概安排) 我是从24年3月也就是开学开始准备考研的,上午10点去图书馆看一个多小时,下午2点开始看到5点半,晚上7点半开始看到9点半,学6休1。开始的时候就学数学,看张宇18讲和记…

基础数学拾遗

目录余弦定理 余弦定理 对于任意一个三角形: \[a^2 = b^2 + c^2 - 2bc * cosA \]任意一边的平方,等于另外两边的平方和,减去2倍这两边与它们夹角余弦值的乘积。

【ROS2学习笔记】话题通信篇:话题通信项目实践——系统状态监测与可视化工具 - 实践

【ROS2学习笔记】话题通信篇:话题通信项目实践——系统状态监测与可视化工具 - 实践pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; f…

建设个人网站需要什么条件php 视频播放网站开发

精排 正样本:曝光点击负样本:曝光未点击 粗排 正样本:曝光点击负样本:如果只复用精排的负样本,粗排模型对精排模型的拟合就会出现比较大的偏差。因为粗排打分高的item可能会被精排打低分,导致不能下发曝…

详细介绍:CS50ai: week2 Uncertainty我的笔记B版——当 AI 开始“承认不确定”

详细介绍:CS50ai: week2 Uncertainty我的笔记B版——当 AI 开始“承认不确定”2025-10-04 15:38 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflo…

2025多校冲刺CSP模拟赛2(普通的颓唐)

写在前面:普通的废话 普通的一天,笑早了的不普通考好前天,今天普通地爆炸了,炸得很普通彻底,令人万万没想到的是普通的肝硬化写错了普通的 \(freopen\) :把普通的 \(stdout\) 拼成了不知道什么的诡异东西。于是肝…

网站制作公司优势企业网站适合做成响应式吗

文章目录一、常用命令(Linux)二、搭建Vsftpd流程2.1. 检测系统2.2. yum安装一、常用命令(Linux) 作用命令启动sudo service vsftpd start关闭sudo service vsftpd stop重启sudo service vsftpd restart查看运行状态sudo service …