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文件读取方法即可

如果对你有帮助的话,点个赞收个藏,给作者一个鼓励。也方便你下次能够快速查找。      

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

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

相关文章

Cortex-A7 架构

参考《 Cortex-A7 Technical ReferenceManua.pdf 》和《 ARM Cortex-A(armV7) 编程手 册 V4.0.pdf 》 【 正点原子】I.MX6U嵌入式Linux驱动开发指南V1.6学习 1.Cortex-A7 MPCore 简介 I.MX6UL 使用的是 Cortex-A7 架构,Cortex-A7 MPcore 处理器支持 1~4 核&#…

kubeadm 安装k8s

目录 安装k8s 环境准备 所有节点,关闭防火墙规则,关闭selinux,关闭swap交换(必须关闭swap分区) //修改主机名 //所有节点修改hosts文件 //调整内核参数 所有节点安装docker 所有节点安装kubeadm,kube…

Layui快速入门之第一节Layui的基本使用

目录 一:Layui的基本概念 二:Layui使用的基本步骤 1.在官网下载layui的基本文件,引入css和js文件 ①:普通方式引入 ②:第三方 CDN 方式引入 2.在script标签体中编写代码 3.测试 一:Layui的基本概念 …

Cmake入门(一文读懂)

目录 1、Cmake简介2、安装CMake3、CMakeLists.txt4、单目录简单实例4.1、CMakeLists.txt4.2、构建bulid内部构建外部构建 4.3、运行C语言程序 5、多目录文件简单实例5.1、根目录CMakeLists.txt5.2、源文件目录5.3、utils.h5.4、创建build 6、生成库文件和链接外部库文件7、注意…

C#备份数据库文件

c#备份数据库文件完整代码 sqlServer 存储过程: USE [PSIDBase] GO /****** Object: StoredProcedure [dbo].[sp_BackupDB] Script Date: 2023/8/31 16:49:02 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GOALTER procedure [dbo].[sp_BackupDB]…

k8s 入门到实战--部署应用到 k8s

k8s 入门到实战 01.png 本文提供视频版: 背景 最近这这段时间更新了一些 k8s 相关的博客和视频,也收到了一些反馈;大概分为这几类: 公司已经经历过服务化改造了,但还未接触过云原生。公司部分应用进行了云原生改造&…

863. 二叉树中所有距离为 K 的结点

863. 二叉树中所有距离为 K 的结点 C代码:dfs /*** struct TreeNode {* int val;* struct TreeNode *left;* struct TreeNode *right;* };*/typedef struct {int key;struct TreeNode* node;UT_hash_handle hh; } HashTable;HashTable* head; int* ans…

【List篇】ArrayList 详解(含图示说明)

Java中的ArrayList是一个动态数组,可以自动扩展容量以适应数据的添加和删除。它可以用来存储各种类型的数据,例如String,Integer,Boolean等。ArrayList实现了List接口,可以进行常见的List操作,例如添加、插…

命令行git联网失败,但是实际可以联网

最近下载代码的时候发现总是告诉我连不上github的网页,但是我自己通过浏览器又可以上网,找了半天发现这个方法可以。 记录下这个代理 打开git bash 执行以下命令: git config --global http.proxy http://127.0.0.1:7890 git config --glob…

VLAN笔记

虚拟VLAN 什么是VLAN VLAN的作用 VLAN的优缺点 VLAN的配置方法 VLAN有哪些接口模式 access与trunk接口的区别 Hybrid接口 拓扑实验enspCiscoH3C ​ 什么是VLAN VLAN(Virtual Local Area Network)又称虚拟局域网,是指在交换局域网的基础上&a…

# 如何使用 GitHub Copilot 发送 Tweet(译)

文章目录 首先,什么是 GitHub Copilot为什么我使用GitHub Copilot 发送 Tweet?理由 1理由 2理由 3 它对你来说有什么价值?如何使用 Copilot 发送推文步骤一:注册 Twitter 开发者账户步骤二:在 Twitter 开发者平台创建应…

HAProxy终结TLS双向认证代理EMQX集群

文章目录 1. 背景介绍2. 系统架构3. 证书签发3.1 创建根证书3.2 创建中间证书3.3 创建设备证书3.4 创建服务端证书 4. HAProxy开启双向认证5. 验证6. 总结 1. 背景介绍 MQTT协议已经成为当前物联网领域的关键技术之一,当前市面上主流的实现MQTT协议的产品主要有 EMQ…

Visio文件编辑查看工具Visio Viewer for Mac

Visio Viewer for Mac(Visio文件编辑查看工具)激活版带给大家!Visio Viewer for Mac是一款能够快速的打开Visio文件,包括 vsd 和 vsds 格式的文件编辑查看工具,Visio Viewer mac支持放大和缩小浏览,并可以将Visio绘图文件转换为PD…

Flink提交jar出现错误RestHandlerException: No jobs included in application.

今天打包一个flink的maven工程为jar,通过flink webUI提交,发现居然报错。 如上图所示,提示错误为: Server Response Message: org.apache.flink.runtime.rest.handler.RestHandlerException: No jobs included in application. …

使用SimPowerSystems并网光伏阵列研究(Simulink实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

09:STM32-------USART串口通信+串口数据包

目录 一:串口协议 1:通信接口 2:串口通信 3:硬件电路 4:电平标准 5:串口参数及其时序 二:USART介绍 1:简历 2:USART框图 3:USART的基本结构 4:数据帧 5: 波特率发生器 6:数据模式 三:案例 A:串口发送--单发送 1:连接图 2:函数介绍 3:代码 B:串口发送接收 1…

《CTFshow-Web入门》09. Web 81~90

Web 入门 索引web81题解 web82题解原理 web83题解 web84题解 web85题解 web86题解 web87题解原理 web88题解 web89题解 web90题解 ctf - web入门 索引 web81:include() 利用,一句话木马之 Nginx 日志利用。web82~86:include() 利用&#xff…

ES6中let和const关键字与var关键字之间的区别?

聚沙成塔每天进步一点点 ⭐ 专栏简介⭐ 变量作用域(Scope):⭐ 变量提升(Hoisting):⭐ 重复声明:⭐ 初始化:⭐ 全局对象属性:⭐ 写在最后 ⭐ 专栏简介 前端入门之旅&#…

【问题总结】 记 一次dockerFile构建报错

写在前面, 其实是一个比较摸不着脑袋的bug,记录一下解决的过程,作为备忘录 问题留档 1、场景描述 在尝试使用dockefile构建一个tomcat镜像,内容如下,构建正常通过,但是容器启动失败 FROM centos:7 MAINT…

设备管理系统有什么功能?它有什么用?

设备管理系统已成为现代化大规模研究所,信息化管理体系建设中最为关键的要素。随着工业设备的机械化、自动化、大型化、高速化以及复杂化等因素不断叠加,设备设施对于工业生产的作用和影响越来越大,其各项制度和流程也涉及面广、内容繁杂。  …