50万奖金+官方证书,深圳国际金融科技大赛正式启动,点击报名 了解详情
写点什么

基于 Selenium 和 Python 的 web 自动化框架

  • 2020-02-12
  • 本文字数:1955 字

    阅读完需:约 6 分钟

基于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 模块,这些模块相辅相成。


1542074347916062408.png


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


1、用例管理模块


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


2、自动化控制器


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


3、报表生成模块


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


4、log 模块


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


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


1、需求分析


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


2、设计和实现


1)页面管理


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


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


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


1542074387680012925.png


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


页面父类 BaseClass.py


1542074400051064993.png


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


1542074413177087788.png


2)公共库模块


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


Common.py


1542074441357020926.png


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


1542074454331060091.png


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


3)测试用例仓库


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


1542074470196021290.png


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


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

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

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

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


3)用例执行模块


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


1542074493437045027.png


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


四、需要改进的模块


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


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


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


3)没有进行持续化集成


五、总结


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


本文转载自宜信技术学院网站。


原文链接:http://college.creditease.cn/detail/183


2020-02-12 15:342127

评论

发布
暂无评论
发现更多内容

大数据-68 Kafka 日志存储 与 LogSegment 机制全面详解 实机实测

武子康

Java 大数据 kafka 分布式 消息队列

实战分析前端优化工具Performance面板!

OpenTiny社区

性能优化 前端 OpenTiny

LED球形屏与传统LED显示屏5大区别

Dylan

LED显示屏 全彩LED显示屏 户外LED显示屏 led显示屏厂家 户内led显示屏

1688店铺所有商品API详解

tbapi

1688API接口 1688数据接口 1688店铺数据采集 1688店铺所有商品

1688商品评论API秘籍!轻松获取商品评论数据

tbapi

1688商品评论数据接口 1688商品评论API 1688API 1688评论API

MyEMS:数字化能源管理系统的技术架构与能效优化实践

开源能源管理系统

开源 能源管理系统

TiDB Grafana 3000 端口漏洞问题处理方案

TiDB 社区干货传送门

管理与运维

从TikTok到X:全球社交媒体平台上的危机预警机制

沃观Wovision

社交媒体 海外舆情监控 沃观Wovision

轻松上手-Navigation路由 H5

最新动态

鸿蒙NEXT安全访问新范式:系统Picker与安全控件解析

最新动态

MyEMS:以开源智能为笔,绘就能源可持续发展新图景

开源能源管理系统

开源 能源管理系统

BeeWorks企业内部通讯,企业安全高效沟通

BeeWorks

即时通讯 IM 私有化部署

拆解需求层级:如何让价值精准传递,撬动产品成功?

IPD产品研发管理

从 VMware 到国产超融合:平滑迁移与效能跃迁的技术实践

智驱前线

多平台服务中的代码混淆与内存安全:ArkTS 应用的安全优化

最新动态

GPT-5时代,咕泡人工智能深度学习班重磅升级!

咕泡科技

人工智能 咕泡ai 咕泡科技 gpt-5

CST软件教程:CST如何设置电压监视器

思茂信息

电磁 仿真 CST软件

人工智能驱动下,海外舆情监测的技术革新与应用

沃观Wovision

人工智能、 沃观Wovision 舆情监测系统

从 VMware 到超融合:合规与性能双重变革下的必然选择

智驱前线

vmware 超融合

HarmonyOS NEXT分布式管理核心功能解析:网络服务和数据传输的实现二

最新动态

当 AI SaaS 的边际成本不再为零,Cursor 是如何设计定价策略的?

Baihai IDP

人工智能 AI SaaS cursor

BeeWorks 即时通讯全家桶:一站式办公的强大引擎

BeeWorks

即时通讯 IM 私有化部署

九宫格自由流转拼图游戏

最新动态

MyEMS:企业低碳转型中的能效价值挖掘与数字化管控范式

开源能源管理系统

开源 能源管理系统

新客户 | 上亿条油罐数据秒查,智慧加油站告别慢查询

TDengine

tdengine 时序数据库 tsdb

NocoBase 本周更新汇总:优化及缺陷修复

NocoBase

开源 低代码 零代码 无代码 版本更新

如何在鸿蒙NEXT系统中构建安全的数据防泄漏体系

最新动态

AI 陪伴市场 2025 收入预计破 1.2 亿美元;语音助手 Commitify:AI 打电话追踪用户任务进度丨日报

声网

开发者必看!前端性能调优工具Performance面板实战

OpenTiny社区

性能优化 前端

鼎捷数智新书创想会:“AI+”的未来已来,面对窗口期鼎捷只争朝夕

人称T客

网易UU远程和向日葵远程控制,哪一款更优秀?

科技热闻

基于Selenium 和 Python的web自动化框架_行业深度_武贯祥_InfoQ精选文章