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


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

相关文章
|
17天前
|
人工智能 JavaScript 前端开发
自动化测试框架的演进与实践###
本文深入探讨了自动化测试框架从诞生至今的发展历程,重点分析了当前主流框架的优势与局限性,并结合实际案例,阐述了如何根据项目需求选择合适的自动化测试策略。文章还展望了未来自动化测试领域的技术趋势,为读者提供了宝贵的实践经验和前瞻性思考。 ###
|
17天前
|
数据采集 数据可视化 数据挖掘
利用Python自动化处理Excel数据:从基础到进阶####
本文旨在为读者提供一个全面的指南,通过Python编程语言实现Excel数据的自动化处理。无论你是初学者还是有经验的开发者,本文都将帮助你掌握Pandas和openpyxl这两个强大的库,从而提升数据处理的效率和准确性。我们将从环境设置开始,逐步深入到数据读取、清洗、分析和可视化等各个环节,最终实现一个实际的自动化项目案例。 ####
|
1月前
|
敏捷开发 人工智能 Devops
探索自动化测试的高效策略与实践###
当今软件开发生命周期中,自动化测试已成为提升效率、保障质量的关键工具。本文深入剖析了自动化测试的核心价值,探讨了一系列高效策略,包括选择合适的自动化框架、设计可维护的测试脚本、集成持续集成/持续部署(CI/CD)流程,以及有效管理和维护测试用例库。通过具体案例分析,揭示了这些策略在实际应用中的成效,为软件测试人员提供了宝贵的经验分享和实践指导。 ###
|
1月前
|
Java 测试技术 持续交付
探索自动化测试在软件开发中的关键作用与实践
在现代软件开发流程中,自动化测试已成为提升产品质量、加速交付速度的不可或缺的一环。本文深入探讨了自动化测试的重要性,分析了其在不同阶段的应用价值,并结合实际案例阐述了如何有效实施自动化测试策略,以期为读者提供一套可操作的实践指南。
|
1月前
|
监控 jenkins 测试技术
自动化测试框架的构建与实践
【10月更文挑战第40天】在软件开发周期中,测试环节扮演着至关重要的角色。本文将引导你了解如何构建一个高效的自动化测试框架,并深入探讨其设计原则、实现方法及维护策略。通过实际代码示例和清晰的步骤说明,我们将一起探索如何确保软件质量,同时提升开发效率。
43 1
|
25天前
|
数据采集
使用 Puppeteer 绕过 Captcha:实现商家数据自动化采集
本文介绍了如何使用Puppeteer结合代理IP和用户伪装技术,轻松绕过大众点评的Captcha验证,实现商家信息的高效采集。通过配置Puppeteer、设置代理和用户伪装参数、模拟人类操作等步骤,成功提取了目标页面的数据。该方法不仅提高了爬虫的稳定性和隐蔽性,还为市场研究和商业分析提供了有力支持。注意,数据采集需遵守法律法规及网站政策。
使用 Puppeteer 绕过 Captcha:实现商家数据自动化采集
|
18天前
|
前端开发 JavaScript 测试技术
前端自动化测试
前端自动化测试是通过使用工具和脚本自动执行测试用例的过程,旨在提高测试效率、减少人为错误,并确保Web应用的功能在不同环境和设备上的一致性与稳定性。
|
19天前
|
jenkins 测试技术 持续交付
自动化测试框架的搭建与实践
在软件开发领域,自动化测试是提升开发效率、确保软件质量的关键手段。本文将引导读者理解自动化测试的重要性,并介绍如何搭建一个基本的自动化测试框架。通过具体示例和步骤,我们将探索如何有效实施自动化测试策略,以实现软件开发流程的优化。
43 7
|
16天前
|
敏捷开发 测试技术 持续交付
自动化测试之美:从零开始搭建你的Python测试框架
在软件开发的马拉松赛道上,自动化测试是那个能让你保持节奏、避免跌宕起伏的神奇小助手。本文将带你走进自动化测试的世界,用Python这把钥匙,解锁高效、可靠的测试框架之门。你将学会如何步步为营,构建属于自己的测试庇护所,让代码质量成为晨跑时清新的空气,而不是雾霾中的忧虑。让我们一起摆脱手动测试的繁琐枷锁,拥抱自动化带来的自由吧!
|
24天前
|
机器学习/深度学习 SQL 安全
如何确保自动化安全测试的全面性和准确性
确保自动化安全测试的全面性和准确性,需集成多种工具(如SAST、DAST、IAST、SCA),编写自动化测试脚本,融入CI/CD流程,定期更新测试用例和工具,使用真实数据,持续维护代码,模拟攻击场景,运用机器学习,采用智能测试平台,并结合手动测试。这些策略有助于及时发现并修复安全问题,提升软件安全性。