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

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

网络异常,图片无法展示
|


前言



今天我们来聊一聊数据分离这个话题,如果我们在网上逛一圈,就很容易找到很多关于 Python数据分离 相关的内容。


测试数据分离 常用于接口自动化测试和UI自动化测试中,有很多使用Airtest项目进行自动化测试的同学,也在积极思考该如何在Airtest项目中实现数据分离。


那么下文我们将以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个小实践,希望可以给同学们提供一些简单的思路。


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

相关文章
|
9月前
|
数据采集 数据可视化 JavaScript
用 通义灵码和 PyQt5 爬虫智能体轻松爬取掘金,自动化采集技术文章和数据
本文介绍了如何利用智能开发工具通义灵码和Python的PyQt5框架,构建一个自动化爬取掘金网站技术文章和数据的智能爬虫系统。通过通义灵码提高代码编写效率,使用PyQt5创建可视化界面,实现对爬虫任务的动态控制与管理。同时,还讲解了应对反爬机制、动态内容加载及数据清洗等关键技术点,帮助开发者高效获取并处理网络信息。
|
7月前
|
Java 测试技术 API
自动化测试工具集成及实践
自动化测试用例的覆盖度及关键点最佳实践、自动化测试工具、集成方法、自动化脚本编写等(兼容多语言(Java、Python、Go、C++、C#等)、多框架(Spring、React、Vue等))
530 6
|
人工智能 JavaScript 前端开发
自动化测试框架的演进与实践###
本文深入探讨了自动化测试框架从诞生至今的发展历程,重点分析了当前主流框架的优势与局限性,并结合实际案例,阐述了如何根据项目需求选择合适的自动化测试策略。文章还展望了未来自动化测试领域的技术趋势,为读者提供了宝贵的实践经验和前瞻性思考。 ###
347 11
|
数据采集 数据可视化 数据挖掘
利用Python自动化处理Excel数据:从基础到进阶####
本文旨在为读者提供一个全面的指南,通过Python编程语言实现Excel数据的自动化处理。无论你是初学者还是有经验的开发者,本文都将帮助你掌握Pandas和openpyxl这两个强大的库,从而提升数据处理的效率和准确性。我们将从环境设置开始,逐步深入到数据读取、清洗、分析和可视化等各个环节,最终实现一个实际的自动化项目案例。 ####
2484 10
|
8月前
|
数据采集 运维 监控
|
12月前
|
数据采集 JSON 前端开发
GraphQL接口采集:自动化发现和提取隐藏数据字段
本文围绕GraphQL接口采集展开,详解如何通过`requests`+`Session`自动化提取隐藏数据字段,结合爬虫代理、Cookie与User-Agent设置实现精准抓取。内容涵盖错误示例(传统HTML解析弊端)、正确姿势(GraphQL请求构造)、原因解释(效率优势)、陷阱提示(反爬机制)及模板推荐(可复用代码)。掌握全文技巧,助你高效采集Yelp商家信息,避免常见误区,快速上手中高级爬虫开发。
234 3
GraphQL接口采集:自动化发现和提取隐藏数据字段
|
人工智能 自然语言处理 API
UI-TARS:字节跳动开源专注于多平台 GUI 自动化交互的视觉语言模型
UI-TARS 是字节跳动推出的新一代原生图形用户界面(GUI)代理模型,支持跨平台自动化交互,具备强大的感知、推理、行动和记忆能力,能够通过自然语言指令完成复杂任务。
3610 16
UI-TARS:字节跳动开源专注于多平台 GUI 自动化交互的视觉语言模型
|
缓存 监控 API
微店商品详情API接口实战指南:从零实现商品数据自动化获取
本文介绍了微店商品详情API接口的应用,涵盖申请与鉴权、签名加密、数据解析等内容。通过Python实战演示了5步获取商品数据的流程,并提供了多平台同步、价格监控等典型应用场景。开发者可利用此接口实现自动化操作,提升电商运营效率,降低人工成本。文中还总结了频率限制、数据缓存等避坑指南,助力开发者高效使用API。
|
数据采集 消息中间件 API
微店API开发全攻略:解锁电商数据与业务自动化的核心能力
微店开放平台提供覆盖商品、订单、用户、营销、物流五大核心模块的API接口,支持企业快速构建电商中台系统。其API体系具备模块化设计、双重认证机制、高并发支持和数据隔离等特性。文档详细解析了商品管理、订单处理、营销工具等核心接口功能,并提供实战代码示例。同时,介绍了企业级整合方案设计,如订单全链路自动化和商品数据中台架构,以及性能优化与稳定性保障措施。最后,针对高频问题提供了排查指南,帮助开发者高效利用API实现电商数智化转型。适合中高级开发者阅读。
|
存储 人工智能 人机交互
PC Agent:开源 AI 电脑智能体,自动收集人机交互数据,模拟认知过程实现办公自动化
PC Agent 是上海交通大学与 GAIR 实验室联合推出的智能 AI 系统,能够模拟人类认知过程,自动化执行复杂的数字任务,如组织研究材料、起草报告等,展现了卓越的数据效率和实际应用潜力。
2213 1
PC Agent:开源 AI 电脑智能体,自动收集人机交互数据,模拟认知过程实现办公自动化

热门文章

最新文章