基于关键字驱动设计Web UI自动化测试框架!

引言

在自动化测试领域,关键字驱动测试(Keyword-Driven Testing, KDT)是一种高效且灵活的方法,它通过抽象测试用例中的操作为关键字,实现了测试用例与测试代码的分离,从而提高了测试脚本的可维护性和可扩展性。本文将详细介绍如何设计并实现一个基于关键字驱动的 Web UI 自动化测试框架,包括配置文件读取、Excel 测试用例管理、关键字驱动类实现以及测试执行逻辑,旨在提供一个可发布的完整解决方案。

框架概述

该框架围绕关键字驱动设计,通过封装底层逻辑代码为关键字驱动类,并使用 Excel 文件管理测试用例,实现了测试用例与测试代码的分离。框架的主要组成部分包括:

配置文件:用于存储浏览器设置等配置信息。 Excel 测试用例:以表格形式存储测试用例,包括关键字、定位器、参数等信息。 关键字驱动类:封装元素定位、操作等底层逻辑代码为关键字方法。 工具函数:用于读取配置文件和 Excel 文件。 测试执行程序:整合所有部分,执行测试用例并生成报告(尽管本文未详细展示报告生成部分)。

框架实现

配置文件读取 (config/settings.py)

创建一个 Python 模块来读取配置文件,支持动态调整浏览器设置。

# config/settings.py
import configparserdef load_settings(file_path='config/settings.ini'):config = configparser.ConfigParser()config.read(file_path)browser_settings = {}if 'Browser' in config:browser_settings['driver_path'] = config['Browser']['driver_path']# 可以根据需要添加更多浏览器选项return browser_settings

Excel 测试用例读取 (tools/excel_reader.py)

使用 pandas 库读取 Excel 文件中的测试用例。

# tools/excel_reader.py
import pandas as pddef read_excel_test_cases(file_path):return pd.read_excel(file_path, engine='openpyxl')

关键字驱动类 (keys/keyword_driver.py)

封装元素定位和操作方法为关键字。

# keys/keyword_driver.py
from selenium.webdriver.common.by import By
from Base.selenium_wrapper import find_element  # 假设Base目录下有selenium封装class KeywordDriver:def __init__(self, driver):self.driver = driverdef type_text(self, locator, text):element = find_element(self.driver, locator['type'], locator['value'])element.clear()element.send_keys(text)def click_element(self, locator):element = find_element(self.driver, locator['click'], locator['value'])element.click()# 可以继续添加其他关键字方法

测试执行逻辑 (main.py)

整合所有部分,执行测试用例。

# main.py
from selenium import webdriver
from config.settings import load_settings
from tools.excel_reader import read_excel_test_cases
from keys.keyword_driver import KeywordDriverdef execute_tests(test_cases, driver):keyword_driver = KeywordDriver(driver)for index, row in test_cases.iterrows():keyword = row['keyword']locator = {'type': row['locator_type'], 'value': row['locator_value']}param = row.get('param')  # 使用get方法避免KeyErrorif keyword == 'type_text':keyword_driver.type_text(locator, param)elif keyword == 'click_element':keyword_driver.click_element(locator)else:print(f"Unsupported keyword: {keyword}")def main():browser_settings = load_settings()driver = webdriver.Chrome(executable_path=browser_settings['driver_path'])test_cases = read_excel_test_cases('data/test_cases.xlsx')execute_tests(test_cases, driver)driver.quit()if __name__ == '__main__':main()

Excel 测试用例格式

Excel 测试用例文件(如 data/test_cases.xlsx)应包含以下列:

  • keyword: 关键字(如 type_text, click_element)

  • locator_type: 定位器类型(如 id, xpath)

  • locator_value: 定位器值

  • param: 参数(可选,根据关键字需要)

确保 Excel 文件的格式与代码中读取的方式相匹配。

注意事项

  • 确保所有依赖库(如 selenium, pandas, openpyxl)已安装。

  • 根据实际需求调整配置文件、Excel 模板和代码逻辑。

  • 考虑添加异常处理和日志记录以增强框架的健壮性和可调试性。

  • 对于更复杂的测试用例,可能需要扩展关键字驱动类以支持更多的关键字和方法。

  • 报告生成部分可以根据需要集成 Allure 或其他测试报告工具。

通过上述实现,我们构建了一个基于关键字驱动的 Web UI 自动化测试框架,它支持灵活的测试用例管理和高效的测试执行,为 Web 应用的自动化测试提供了有力的支持。

最后感谢每一个认真阅读我文章的人,看着粉丝一路的上涨和关注,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走! 

软件测试面试文档

我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

在这里插入图片描述

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

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

相关文章

揭秘!电源炼成记:从基础原理到高端设计的全面解析

文章目录 初始构想:需求驱动设计原理探索:选择适合的拓扑结构精细设计:元器件选型与布局环路稳定:控制策略与补偿网络严格测试:验证与优化持续改进:创新与技术迭代《硬件十万个为什么(电源是怎样…

arinc664总线协议

本篇目录: 1、AFDX总线协议简介2、ARINC429数据总线简介3、波音777飞机飞行技术问题4、航空电子理论基础知识5、航空专用积体电路详细资料大全 AFDX总线协议简介 (1)AFDX的传输速率高:带宽100MHZ,远远高于其他的类型…

昇思25天学习打卡营第18天|文本解码原理--以MindNLP为例

文章目录 昇思MindSpore应用实践1、自回归语言模型RNN网络 2、文本解码原理--以MindNLP为例Greedy searchBeam searchRepeat problemTopK sample Refernence 昇思MindSpore应用实践 本系列文章主要用于记录昇思25天学习打卡营的学习心得。 1、自回归语言模型 自回归语言模型…

【JVM基础04】——组成-什么是虚拟机栈?

目录 1- 引言:虚拟机栈1-1 虚拟机栈是什么?(What)1-2 为什么用虚拟机栈?虚拟机栈的作用 (Why) 2- ⭐核心:栈的常见问题(How)2-1 方法内的局部变量是否线程安全?线程不安全的局部变量 2-2 什么情况会导致栈内存溢出&…

深入Mysql-03-MySQL 表的约束与数据库设计

文章目录 数据库约束的概述约束种类主键约束唯一约束非空约束默认值外键约束 表与表之间的关系数据库设计 数据库约束的概述 对表中的数据进行限制,保证数据的正确性、有效性和完整性。一个表如果添加了约束,不正确的数据将无法插入到表中。 约束种类 …

go-kratos 学习笔记(3) google buf 管理proto

google buf 管理proto,以及从新归档文件的目录结构 什么是 BSR? BSR 将 Protobuf 文件作为版本化模块进行存储和管理,以便个人和组织可以轻松使用和发布他们的 API。 BSR 带有可浏览的 UI、依赖项管理、API 验证、版本控制、生成的文档以及…

稳居中科院2区的SCIEI双检索期刊,听说一投就中!

IEEE TRANSACTIONS ON ELECTRON DEVICES,中科院2区,JCR Q2, SCI&EI双检索期刊,年发文量在1000篇左右,且大有继续扩刊的走向。有投稿经验的作者反馈,比较容易被录用。 期刊信息 IEEE TRANSACTIONS ON ELECTRON DE…

Python 机器学习求解 PDE 学习项目——PINN 求解一维 Poisson 方程

本文使用 TensorFlow 1.15 环境搭建深度神经网络(PINN)求解一维 Poisson 方程: − Δ u f in Ω , u 0 on Γ : ∂ Ω . \begin{align} -\Delta u & f \quad & \text{in } \Omega,\\ u & 0 \quad & \text{on } \Gamma:\partial \Om…

非对称加密算法RSA的OpenSSL代码实现Demo

目录 1 RSA简介 1.1 RSA算法介绍 1.2 RSA算法的速度与安全性 1.3 RSA存储格式 1.3.1 PKCS#1 标准主要用于 RSA密钥,其RSA公钥和RSA私钥PEM格式 1.3.2 PKCS#8 标准定义了一个密钥格式的通用方案,其公钥和私钥PEM格式 2 OpenSSL代码实现 2.1 生…

初学51单片机之指针基础与串口通信应用

开始之前推荐一个电路学习软件,这个软件笔者也刚接触。名字是Circuit有在线版本和不在线版本,这是笔者在B站看视频翻到的。 Paul Falstadhttps://www.falstad.com/这是地址。 离线版本在网站内点这个进去 根据你的系统下载你需要的版本红线的是windows…

第九讲:POU与变量基础

POU(Program Organization Unit)的分类 一、定义及分类 POU即程序组成单元 二、三种POU的作用 1、功能/功能快:看作算法 功能块的POU是比较复杂的指令 三、功能块POU和功能POU的区别 1、理解功能POU(对比) 不添加实例名,就不需要去建立变量,所以就不会占到内存。 因…

算法题目整合4

文章目录 122. 大数减法123. 滑动窗口最大值117. 软件构建124. 小红的数组构造125. 精华帖子126. 连续子数组最大和 122. 大数减法 题目描述 以字符串的形式读入两个数字,编写一个函数计算它们的差,以字符串形式返回。输入描述 输入两个数字&#xff…

物联网专业创新人才培养体系的探索与实践

一、引言 随着物联网(IoT)技术的迅猛发展,物联网领域的人才需求日益增加。物联网技术作为新一轮信息技术革命的核心,已经渗透到社会生活的各个领域,对推动经济转型升级、提升国家竞争力具有重要意义。因此&#xff0c…

VUE之---slot插槽

什么是插槽 slot 【插槽】, 是 Vue 的内容分发机制, 组件内部的模板引擎使用slot 元素作为承载分发内容的出口。slot 是子组件的一个模板标签元素, 而这一个标签元素是否显示, 以及怎么显示是由父组件决定的。 VUE中slot【插槽】…

自己开发软件实现网站抓取m3u8链接

几天前一个同学说想下载一个网站的视频找不到连接,问我有没有什么办法,网站抓取m3u8链接 网页抓取m3u8链接。当时一听觉得应该简单,于是说我抽空看看。然后就分析目标网页,试图从网页源码里找出连接,有的源代码直接有,但是有的没有…

Java二十三种设计模式-代理模式模式(8/23)

代理模式:为对象访问提供灵活的控制 引言 代理模式(Proxy Pattern)是一种结构型设计模式,它为其他对象提供一个代替或占位符,以控制对它的访问。 基础知识,java设计模式总体来说设计模式分为三大类&#…

Varjo XR-4系列现已获得达索3DEXPERIENCE平台官方支持

近日,全球领先的工业虚拟和混合现实解决方案提供商Varjo宣布,Varjo XR-4系列现已获得达索3DEXPERIENCE平台的本地支持。这种集成为工程师和设计师带来了先进的虚拟和混合现实功能,他们可以通过沉浸式技术创新并简化他们的3D工作流程。 在达索…

【iOS】Tagged Pointer

目录 前言什么是Tagged Pointer?引入Tagged Pointer技术之前引入Tagged Pointer之后总结 Tagged Pointer原理(TagData分析)关闭数据混淆MacOS分析NSNumberNSString iOS分析 判断Tagged PointerTagged Pointer应用Tagged Pointer 注意点 Tagge…

Qt绘制指南针(仪表盘绘制封装使用)

指南针是一种用来确定方向的工具。它由一个磁针制成,其一端被磁化,可以自由旋转。当放置在水平面上时,磁针会指向地球的磁北极。通过观察磁针的指向,我们可以确定地理北方的方向。本示例是在Qt中绘制一个指南针,通过继…

Android WebViewClient 的 `shouldOverrideUrlLoading` 方法

简介 在Android开发中,WebView是一个强大的工具,可以在你的应用中显示网页内容。了解 WebViewClient 中的 shouldOverrideUrlLoading 方法是至关重要的,因为这个方法允许你控制 URL 在 WebView 中的处理方式。 在本文中,我们将详…