【Airtest】UI自动化测试的数据分离实践

news2024/12/27 13:08:16

目录

前言

1. 示例介绍

2. 读取Excel单元格里的数据

1)安装 xlrd 第三方库

2)读取表格数据存储到列表中

3)封装成读取控件信息的函数

3. 处理控件信息并实现控件操作

小结


前言

在UI自动化测试中,测试数据的管理和组织是一个很重要的问题。测试数据不仅要能够反应测试场景的多样性,同时还需要能够随时进行更改,保证测试的灵活性和可维护性。而数据分离则是实现这一目标的重要方法之一。Airtest是一款流行的UI自动化测试框架,它支持使用Excel、CSV、YAML等文件格式来管理测试数据,实现数据分离的目的。

那么下文我们将以1个简单的示例,来看下我们可以如何在Airtest项目中实现数据分离:

1. 示例介绍

编写过Poco脚本的同学都知道,它的操作都是基于控件的。假设我们把需要操作的控件信息都存在Excel表格里面,那么我们的脚本只需要从Excel中读取到我们所需要的控件信息,然后对该控件进行操作即可。

如果控件信息发生了变化,我们也只需要定期维护Excel表格,而不需要处理我们的自动化脚本。

所以今天的示例大致是完成以下事情:

  • 把控件数据保存到指定的Excel表格里

  • 从Excel表格中读取控件信息待用

  • 处理表格读到的控件信息并实现控件操作

2. 读取Excel单元格里的数据

假设我们在 D:\demo\ 下保存了1个名为 NetEase_Cloud_Music.xls 的Excel表格,用于存储下述控件信息:

每行的内容代表着1个完整的控件信息,准备好表格后,我们就可以开始编写对应的脚本把这些控件信息读取出来了。

1)安装 xlrd 第三方库

Python操作Excel表格,有一个专门的第三方库叫 xlrd 。我们需要在使用的Python环境中安装上该第三方库:

pip install xlrd

安装成功后,我们还可以使用 pip list 命令检查下。

这里我们还是使用AirtestIDE来编写脚本,在IDE的选项--设置中,设置使用安装了 xlrd 库的Python环境:

此时在 .air 脚本中,我们就可以直接使用 import xlrd 来调用这个第三方库了。

2)读取表格数据存储到列表中

import xlrd
# 打开指定路径的Excel文件
ex = xlrd.open_workbook(r'D:\demo\NetEase_Cloud_Music.xls')
# 获取指定名称的sheet
sheet = ex.sheet_by_name('elements')
# 定义1个控列表,用于存放控件信息
dat = []  
# 遍历表格的每一行数据,将每行的控件信息构建成1个字典添加到列表中    
for row in range(sheet.nrows):  
    cells = sheet.row_values(row)  
    data={'element':cells[0],'attributes':cells[1],'position':cells[2]}
    dat.append(data)

我们可以把列表的内容 print 出来看看我们获取的信息是否正确:

3)封装成读取控件信息的函数

为了方便使用,我们可以把这个读取表格数据这部分的内容封装成函数,最终返回我们想要的保存了控件信息的列表即可:

def get_excel():
    
    ex = xlrd.open_workbook(r'D:\demo\NetEase_Cloud_Music.xls')
    sheet = ex.sheet_by_name('elements')
    dat = []  
    
    for row in range(sheet.nrows):  
        cells = sheet.row_values(row)  
        data={'element':cells[0],'attributes':cells[1],'position':cells[2]}
        dat.append(data) 
    
    return dat

3. 处理控件信息并实现控件操作

拿到了我们需要的控件信息之后,我们预期的情况是,通过控件名称,匹配到对应的属性和定位脚本来实现控件操作:

def another_poco(list,element):
    for li in list:
        if li.get('element') == element:
            if li.get('attributes') == 'text':
                return poco(text=li.get('position'))
            elif li.get('attributes') == 'name':
                return poco(li.get('position'))

这里实现了1个函数,给它传入对应的列表(读取到的表格数据)和想要操作的控件名称,即可返回poco定位脚本,帮助我们实现后续的操作:

dat = get_excel()
start_app("com.netease.cloudmusic")
another_poco(dat,'每日推荐').click()
sleep(1.0)
another_poco(dat,'播放全部').click()
keyevent("BACK")
keyevent("BACK")
another_poco(dat,'每日推荐').wait_for_appearance()
another_poco(dat,'首页搜索').click()
text('张艺兴')
another_poco(dat,'单曲').wait_for_appearance()
another_poco(dat,'单曲').click()

小结

那么以上内容就是我们在Airtest项目上实现数据分离的1个小实践。

那在实际项目的应用过程中呢,还需要考虑更多的一些问题,比如控件重复的情况、控件数据量庞大的情况、控件数据分表保存的情况等等,这些就有待大家继续深入拓展实现了~

 作为一位过来人也是希望大家少走一些弯路,希望能对你带来帮助。(WEB自动化测试、app自动化测试、接口自动化测试、持续集成、自动化测试开发、大厂面试真题、简历模板等等),相信能使你更好的进步!

留【自动化测试】即可【自动化测试交流】:574737577(备注ccc)icon-default.png?t=N5F7http://qm.qq.com/cgi-bin/qm/qr?_wv=1027&k=khh1u309hOPfmutO7szune5BMv7p8BHg&authKey=kRBNmDukZpv512fdc7h2hFwQvgQFubVtbuOOFlKwsRVnal%2FcYaEiQOlTEDIi5Nd5&noverify=0&group_code=574737577

 

 

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

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

相关文章

Spring-Retry(重试机制)

Spring-Retry(重试机制) 在实际工作中,重处理是一个非常常见的场景,比如: 发送消息失败。 调用远程服务失败。 争抢锁失败。 这些错误可能是因为网络波动造成的,等待过后重处理就能成功。通常来说,会用try…

Redis入门 - 5种基本数据类型

原文首更地址,阅读效果更佳! Redis入门 - 5种基本数据类型 | CoderMast编程桅杆https://www.codermast.com/database/redis/five-base-datatype.html 说明 在我们平常的业务中基本只会使用到Redis的基本数据类型(String、List、Hash、Set、…

重新学树结构

树 图一 图二 相关术语 前驱:某结点上一层结点,图中H结点的前驱结点是F后继:某结点紧跟的后面的结点,图中F结点的后继是G、H、I三个结点根结点:非空树没有前驱结点的结点,图中的R结点结点的度&#x…

019+limou+C语言预处理

0.前言 您好,这里是limou3434的一篇博客,感兴趣您可以看看我的其他博文系列。本次我主要给您带来了C语言有关预处理的知识。 1.宏的深度理解与使用 1.1.数值宏常量 #define PI 3.1415926注意define和#之间是可以留有空格的 1.2.字符宏常量 #includ…

设置论文中的图、表的题注

参考b站:毕业论文图表如何自动编号/word图表自动编号/图表编号自动更新 其中,更新图表序号 视频使用ctrl 设置论文中的图、表的题注 step1:设置章节1.1: 章节设置字体样式,选择标题11.2:章节添加序号1.3 修改序号 和字之间的缩进&…

Linux->线程基本概念

目录 前言: 1. 线程的基本概念 2 线程的优点 3 线程的缺点 4 数据块大小为4KB大小的真正原因 前言: 本篇文章讲解了线程与进程之间的区别和联系,线程的优缺点,还有内存的数据管理与磁盘之间的关系,虚拟内存到内存…

阿里云服务器提供哪些操作系统和软件支持?是否与常用软件兼容?

阿里云服务器提供哪些操作系统和软件支持?是否与常用软件兼容?    阿里云服务器支持的操作系统   为了满足不同用户需求,阿里云服务器(ECS)提供了丰富的操作系统选择。以下是阿里云服务器支持的主要操作系统&#…

Linux 配置MySQL环境(三)

Linux配置MySQL环境 一、下载1. 官网下载MySQL2. 百度网盘快速下载MySQL 二、安装1、通过 Xftp 将 MySQL 安装包拷贝到 Linux2、解压缩3、安装 common、libs、client、server4、初步连接 三、卸载四、常用设置1. 修改 root 用户密码 五、使用新密码登录六、开启远程访问七、开放…

PHP设计模式21-工厂模式的讲解及应用

文章目录 前言基础知识简单工厂模式工厂方法模式抽象工厂模式 详解工厂模式普通的实现更加优雅的实现 总结 前言 本文已收录于PHP全栈系列专栏:PHP快速入门与实战 学会好设计模式,能够对我们的技术水平得到非常大的提升。同时也会让我们的代码写的非常…

OpenCV 笔记_5

文章目录 笔记_5特征点匹配DMatch 存放匹配结果DescriptorMatcher::match 特征点描述子(一对一)匹配DescriptorMatcher::knnMatch 特征点描述子(一对多)匹配DescriptorMatcher::radiusMatch 特征点描述子(一对多&#…

Frontiers in Microbiology:DAP-seq技术在猪苓C2H2转录因子PuCRZ1调控菌丝生长及渗透胁迫耐受性机制研究中的应用

猪苓(Polyporus umbellatus)是一种可食用的蘑菇,也是我国常用的菌类药材之一,至今已有2000多年的药用历史,在《神农本草经》、《本草纲目》、《本草求真》等典籍中均有记载。猪苓具有利尿、抗菌作用,近年来…

SpringBatch从入门到实战(二):HelloWorld

一:HelloWorld 1.1 配置Job、Step、Tasklet Configuration public class HelloWorldJobConfig {Autowiredprivate JobBuilderFactory jobBuilderFactory;Autowiredprivate StepBuilderFactory stepBuilderFactory;Beanpublic Job helloWorldJob() {return jobBuild…

代码随想录算法训练营第五十九天|503.下一个更大元素II 42. 接雨水

目录 LeeCode 503.下一个更大元素II LeeCode 42. 接雨水 暴力解法 优化双指针法 单调栈法 LeeCode 503.下一个更大元素II 503. 下一个更大元素 II - 力扣(LeetCode) 【思路】 相较于前两道题目,这道题目将数组改为循环数组&#x…

python获取度娘热搜数据并保存成Excel

python获取百度热搜数据 一、获取目标、准备工作二、开始编码三、总结 一、获取目标、准备工作 1、获取目标: 本次获取教程目标:某度热搜 2、准备工作 环境python3.xrequestspandas requests跟pandas为本次教程所需的库,requests用于模拟h…

在读博士怎么申请公派访学?

作为在读博士生,申请公派访学是一项重要而有益的经历。下面知识人网将为您介绍一些关于如何申请公派访学的步骤和注意事项。 首先,您需要找到一个合适的公派访学机会。可以通过与导师、教授或其他相关人士进行交流来获取相关信息。还可以参考学术会议、研…

【Linux】linux | 服务响应慢、问题排查 | 带宽问题导致

一、说明 1、项目使用云服务器,服务器配置:5M带宽、4核、32G,1T,CentOS7 2、CPU、内存、磁盘IO都没有达到瓶颈,猜测是带宽问题 3、应用比较多,应用中间件,十几个差不多 4、同时在线人数30 5、已…

继承~~~

1:继承概述,使用继承的好处 1:什么是继承? Java中提供一个关键字extends,用这个关键字,我们可以让一个类和另一类建立起父子关系。 public class Student extends People{} Student称为子类&#xff08…

乘势而起:机载航电·显控显示系统仿真

改革开放以来,我国国民经济与科学技术取得了长足的发展,信息化、工业成熟度与自动化程度不断深化,极大地增强了国家的综合实力、在世界范围内显示了大国地位。在当前科技产业的发展和变革的历史性交汇期,“工业4.0”、“中国制造2…

iOS App 上架流程图文教学

在上架App 之前必须先准备好开发者帐号,但申请开发者帐号因法兰克早在之前已经申请好了,故就跳过此步骤,直接从产生凭证到上传App开始讲起。首先,要将自己辛苦写好的App 送审的话,则要依序做完下列几件事情即可。 在开…

NFT Insider #98:The Sandbox与Forkast Labs 达成合作,苹果的混合现实头显将增强游戏和元宇宙

引言:NFT Insider由NFT收藏组织WHALE Members(https://twitter.com/WHALEMembers)、BeepCrypto(https://twitter.com/beep_crypto)联合出品,浓缩每周NFT新闻,为大家带来关于NFT最全面、最新鲜、最有价值的讯息。每期周…