Python UI自动化 —— 关键字+excel表格数据驱动

步骤:
1. 对selenium进行二次封装,创建关键字的库
2. 准备一个表格文件来写入所有测试用例步骤
3. 对表格内容进行读取,使用映射关系来对用例进行调用执行
4. 执行用例
1. 对selenium进行二次封装,创建关键字的库
from time import sleep
from selenium import webdriverclass Key:def __init__(self):self.driver = webdriver.Chrome()# 浏览器操作------------------------------------------------------------------def open(self, txt):# 打开网址self.driver.get(txt)# 最大化浏览器窗口self.driver.maximize_window()# 隐式等待10秒self.driver.implicitly_wait(10)def quit(self):# 退出浏览器self.driver.quit()def sleep(self, txt):# 强制等待sleep(txt)# 元素操作函数-----------------------------------------------------------------def input(self, txt, value, name="xpath"):# 输入el = self.driver.find_element(name, value)el.send_keys(txt)def click(self, value, name="xpath"):# 点击el = self.driver.find_element(name, value)el.click()
2. 创建一个表格,写入测试步骤
将表格放入项目任意路径下,记住路径,待会读取文件需要用到,我这里是放在这里

解释一下:(定位方法)为空,是因为关键字方法封装时,已经带上了默认参数

3. 写一个excel表格读取方法,对表格内容进行读取,使用映射关系来对用例进行调用执行。
看注释就明白是啥意思了
import os
import openpyxl
from UI.Base.selenium_key import Key# 获取该路径“../TestExampleExcel”模板下所有xlsx文件
filenames = os.listdir(r"../TestExampleExcel")# 实例化驱动
wd = Key()# 遍历所有xlsx文件
for i in filenames:excel = openpyxl.load_workbook(f'../TestExampleExcel/{i}')# 获取全部sheet页,遍历sheet页执行不同sheet页中的用例for name in excel.sheetnames:sheet = excel[name]print(f"正在执行{i}文件中的{name}用例")# 打印每一行表格数据for values in sheet.values:# 如果excel表格的第三列不是int类型,则不打印。if isinstance(values[2], int):data = {}data['name'] = values[4]data['value'] = values[5]data['txt'] = values[6]# 将字典中的None值给去除掉for k in list(data.keys()):if data[k] is None:del data[k]print(f"正在执行:{values[1]}")getattr(wd, values[3])(**data)
4. 执行用例
执行Excel文件读取方法即可


如果对你有帮助的话,点个赞收个藏,给作者一个鼓励。也方便你下次能够快速查找。
相关文章:
Python UI自动化 —— 关键字+excel表格数据驱动
步骤: 1. 对selenium进行二次封装,创建关键字的库 2. 准备一个表格文件来写入所有测试用例步骤 3. 对表格内容进行读取,使用映射关系来对用例进行调用执行 4. 执行用例 1. 对selenium进行二次封装,创建关键字的库 from time imp…...
AI:06-基于OpenCV的二维码识别技术的研究
二维码作为一种广泛应用于信息传递和识别的技术,具有识别速度快、容错率高等优点。本文探讨如何利用OpenCV库实现二维码的快速、准确识别,通过多处代码实例展示技术深度。 二维码作为一种矩阵型的条码,广泛应用于各个领域,如商品追溯、移动支付、活动签到等。二维码的快速…...
Spring MVC Http Event Stream
什么是 Http Event Stream Event Stream 技术是一种实现服务器推送事件的方法,它通过在一个持续的 HTTP 连接上发送事件流来实现推送。具体来说,服务器发送一些事件到客户端,并将这些事件封装成一些指定格式的文本流。客户端通过监听这个流&…...
2023年亲测有效----树莓派启动时自动邮件上报ip
2023年亲测 树莓派启动时自动邮件上报ip 首先开启qq邮箱smtp服务shell文件内容启动自动执行python文件注意事项 首先开启qq邮箱smtp服务 然后点击开启就会有授权码 shell文件内容 在自己的shell里,运行echo $PATH,把内容覆盖下面的path。 功能 作用就…...
Direct3D颜色
在Direct3D中颜色用RGB三元组来表示,RGB数据可用俩种不同的结构来保存,第一种是D3DCOLOR,它实际上与DWORD类型完全相同,共有32位,D3DCOLOR类型种的各位被分成四个8位项,每项存储了一种颜色分量的亮度值。 由…...
LLM - 大模型速递 Baichuan2 快速入门
目录 一.引言 二.模型探索 1.模型下载 2.模型结构 ◆ Baichuan-1-13B 结构 ◆ Baichuan-2-13B 结构 3.模型测试 ◆ Baichuan-2-13B Chat 推理 ◆ Baichuan-2-13B 显存 4.模型量化 ◆ 在线量化 ◆ 离线量化 ◆ 量化效果 5.模型迁移 三.模型微调 …...
DB2和MYSQL的LOAD原理和比较测试
DB2 load的过程: (1)、装入阶段 装入阶段将源数据解析成物理数据页的格式,直接装入到数据页中。必要时还收集索引键和表统计信息。 (2)、构建索引阶段 根据在装入阶段收集的索引键创建表索引。 (…...
redisson常用api
redisson提供了很多对象类型的api,下面介绍下一些常用的对象api。 RBucket 可操作任何对象的api,前提是要确定好泛型,方法比较少。大小限制为512Mb。 RBucket<AnyObject> bucket redisson.getBucket("anyObject");bucket…...
MySQL——数据库以及数据表的创建
创建数据库 回到刚才创建数据库的问题,我们在创建数据库的时候可以通过添加一个参数,这个参数的意义在于当我们创建的数据库已经存在的时候则不会创建,也不会报错,如果不使用这个参数,则我们在重复创建一个已经存在的…...
智能配电房管理
智能配电房管理依托电易云-智慧电力物联网,利用先进技术手段,对配电房进行智能化、自动化的管理,以提高配电房的安全性、可靠性和效率。 智能配电房管理包括: 1.实时监测:通过传感器、监控设备等手段,对配…...
php如何解决高并发的问题?
在PHP中解决高并发问题可以采取以下几种策略: 使用缓存:通过使用缓存技术,可以将经常访问的数据存储在内存中,减轻数据库或其他资源的压力。常见的缓存技术包括Memcached和Redis。PHP提供了与这些缓存服务器进行交互的扩展和库。 …...
Linux操作系统
线程竞争 那么初始化一个整型为 0,使用一万个线程,每个线程都对该整型加 1,最后结果不一定会是 10000。这是因为整型变量的赋值操作不是原子操作,也就是说它不是一个不可分割的操作,而是由多条指令组成的。例如&#…...
华为OD:VLAN资源池
题目描述: VLANO 是一种对局域网设备进行逻辑划分的技术,为了标识不同的VLAN,引入VLAN ID(1-4094之间的整数)的概念。 定义一个VLAN ID的资源池(下称VLAN资源池),资源池中连续的VLAN用开始VLAN-结束VLAN表…...
大学大创项目:手机室内AR导航APP项目思路
文章目录 一、最初的项目思路二、建图和定位分离的项目思路1、建图2、定位 个人见解,如有错误,请多包涵 一、最初的项目思路 在大创项目的开始,将手机确定为应用设备,传感器确定为相机。 由于知识储备的原因,在头一次…...
OpenSSL加解密算法使用方法
下面简单记录一下 Linux上openssl命令的使用方法,包括 OpenSSL中加解密算法的使用方法和性能测试方法,以便让新手朋友们能快速用起来。持续更新中 … sm3算法 $ openssl sm3 /tmp/1.txt SM3(/tmp/1.txt) baafadbe43559b7043abd1682a4e12be05692cae175…...
Excel VSTO开发10 -自定义任务面板
版权声明:本文为博主原创文章,转载请在显著位置标明本文出处以及作者网名,未经作者允许不得用于商业目的。 10 自定义任务面板 自定义任务面板(有些地方称为侧边面板)即CustomTaskPane,这个类在Microsoft…...
百度智能云千帆大模型丨未来人手必备的代码助手
文章目录 1. 前言2. 千帆大模型平台3. 十分友好的功能4. comate代码助手5. 总结 1. 前言 我之前给大家推荐过Poe这个网站,它用的人比较少,但一旦接触后会发现它其实挺强大的。 因为它是一个可以同时支持好几个大模型的在线聚合平台。常用的GPT4&#x…...
美客多平台经营秘籍:为何测评补单操作是必要的?
许多经营美客多平台的商家有一种观念,他们认为美客多平台的规则与亚马逊有所区别。在美客多上,店铺比产品更重要,而且平台的竞争相对较小。因此,他们认为在美客多平台进行补单操作是不必要的。 然而,根据美客多平台的…...
AArch64内存管理
概述 本指南介绍AArch64中的内存转换,这是内存管理的关键。本文介绍了如何将虚拟地址转换为物理地址、转换表格式以及软件如何管理页表缓存 (TLB)。 这些对于底层代码(例如启动代码或驱动程序)开发人员都很有用。对于编写软件来设置或管理内…...
导出Excel的技术分享-综合篇
导出Excel的技术分享-综合篇 简单的EasyExcel使用 /*** 最简单的写*/public void simpleWrite() {// 注意 simpleWrite在数据量不大的情况下可以使用(5000以内,具体也要看实际情况),数据量大参照 重复多次写入// 写法1 JDK8// s…...
理解 MCP 工作流:使用 Ollama 和 LangChain 构建本地 MCP 客户端
🌟 什么是 MCP? 模型控制协议 (MCP) 是一种创新的协议,旨在无缝连接 AI 模型与应用程序。 MCP 是一个开源协议,它标准化了我们的 LLM 应用程序连接所需工具和数据源并与之协作的方式。 可以把它想象成你的 AI 模型 和想要使用它…...
基于Docker Compose部署Java微服务项目
一. 创建根项目 根项目(父项目)主要用于依赖管理 一些需要注意的点: 打包方式需要为 pom<modules>里需要注册子模块不要引入maven的打包插件,否则打包时会出问题 <?xml version"1.0" encoding"UTF-8…...
反射获取方法和属性
Java反射获取方法 在Java中,反射(Reflection)是一种强大的机制,允许程序在运行时访问和操作类的内部属性和方法。通过反射,可以动态地创建对象、调用方法、改变属性值,这在很多Java框架中如Spring和Hiberna…...
DeepSeek 技术赋能无人农场协同作业:用 AI 重构农田管理 “神经网”
目录 一、引言二、DeepSeek 技术大揭秘2.1 核心架构解析2.2 关键技术剖析 三、智能农业无人农场协同作业现状3.1 发展现状概述3.2 协同作业模式介绍 四、DeepSeek 的 “农场奇妙游”4.1 数据处理与分析4.2 作物生长监测与预测4.3 病虫害防治4.4 农机协同作业调度 五、实际案例大…...
算法:模拟
1.替换所有的问号 1576. 替换所有的问号 - 力扣(LeetCode) 遍历字符串:通过外层循环逐一检查每个字符。遇到 ? 时处理: 内层循环遍历小写字母(a 到 z)。对每个字母检查是否满足: 与…...
【FTP】ftp文件传输会丢包吗?批量几百个文件传输,有一些文件没有传输完整,如何解决?
FTP(File Transfer Protocol)本身是一个基于 TCP 的协议,理论上不会丢包。但 FTP 文件传输过程中仍可能出现文件不完整、丢失或损坏的情况,主要原因包括: ✅ 一、FTP传输可能“丢包”或文件不完整的原因 原因描述网络…...
React从基础入门到高级实战:React 实战项目 - 项目五:微前端与模块化架构
React 实战项目:微前端与模块化架构 欢迎来到 React 开发教程专栏 的第 30 篇!在前 29 篇文章中,我们从 React 的基础概念逐步深入到高级技巧,涵盖了组件设计、状态管理、路由配置、性能优化和企业级应用等核心内容。这一次&…...
2025年- H71-Lc179--39.组合总和(回溯,组合)--Java版
1.题目描述 2.思路 当前的元素可以重复使用。 (1)确定回溯算法函数的参数和返回值(一般是void类型) (2)因为是用递归实现的,所以我们要确定终止条件 (3)单层搜索逻辑 二…...
高保真组件库:开关
一:制作关状态 拖入一个矩形作为关闭的底色:44 x 22,填充灰色CCCCCC,圆角23,边框宽度0,文本为”关“,右对齐,边距2,2,6,2,文本颜色白色FFFFFF。 拖拽一个椭圆,尺寸18 x 18,边框为0。3. 全选转为动态面板状态1命名为”关“。 二:制作开状态 复制关状态并命名为”开…...
Ubuntu 可执行程序自启动方法
使用 autostart(适用于桌面环境) 适用于 GNOME/KDE 桌面环境(如 Ubuntu 图形界面) 1. 创建 .desktop 文件 sudo vi ~/.config/autostart/my_laser.desktop[Desktop Entry] TypeApplication NameMy Laser Program Execbash -c &…...
