Airtest 和 Poco常用函数

本文介绍了Airtest,一款由网易推出的基于图像识别和Poco控件识别的UI自动化测试工具,旨在降低自动化测试门槛。文章还详细讲解了Poco框架,通过实例展示了如何进行点击、对象判断、拖动等操作。此外,还概述了Airtest的核心API,包括设备连接、应用操作、屏幕截图等功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Airtest简介
Airtest是网易出品的一款基于图像识别和poco控件识别的一款UI自动化测试工具。基于图形化识别的Airtest Project解决方案,十分有效地降低了自动化测试的门槛,真正使自动化测试带来测试效率的提升。Google表示Airtest 是安卓游戏最强大、最全面的自动测试方案之一。

Airtest的使用,官方文档有详细说明,详见:
http://airtest.netease.com/docs/docs_AirtestIDE-zh_CN/index.html

Airtest API文档,如下:
https://airtest.readthedocs.io/en/latest/

以下列出将Airtest API文档翻译了一些常用的操作,希望能帮助到大家:

Poco

Poco是一款基于UI控件搜索的自动化框架,与基于图像识别的Airtest不同的是,Poco可以使用类似 poco(“OK”).click() 的方式来获取并操作节点

Poco的常规使用案例:
poco = Poco() 初始化
点击
poco(‘btn_start’).click()
poco(text=‘basic’).click().click()
poco(‘btn_back’, type=‘Button’).click()
poco(‘star_single’).long_click()
poco(‘star_single’).long_click(duration=5)

对象存在判断
invisible_obj = poco(‘result_panel’, type=‘Layer’)
print(invisible_obj.exists()) # => False. This UI is not visible to user.

拖动和滑动(drag/swipe)
poco(‘star’).drag_to(poco(‘shell’))
poco(‘Scroll View’).swipe([0, -0.1])
poco(‘Scroll View’).swipe(‘up’) # the same as above, also have down/left/right

x, y = poco(‘Scroll View’).get_position()
end = [x, y - 0.1]
dir = [0, -0.1]
poco.swipe([x, y], end) # drag from point A to point B
poco.swipe([x, y], direction=dir) # drag from point A toward given direction and length

等待UI
start_btn = poco(‘start’)
start_btn.click()
start_btn.wa

### 关于AirTestPoco的使用教程 #### AirTestPoco简介 AirTest是一个用于UI自动化的框架,支持多平台的应用程序测试。它能够通过图像匹配技术来定位界面元素并执行交互动作。而Poco则是由AirTest团队开发的一个专门针对原生应用、H5页面以及Unity3D游戏等场景下的UI自动化解决方案[^1]。 #### 安装配置环境 为了开始使用AirTest IDE进行脚本编写,在官方网站可以找到详细的安装指南。完成安装之后就可以启动IDE连接目标设备,并加载待测应用程序实例,比如对于基于Unity引擎的游戏客户端来说,只需要按照官方文档中的指导步骤操作即可实现连接。 #### 封装断言方法 当构建测试案例时,通常会涉及到验证某些条件是否满足的情况。可以通过定义自定义函数的方式来简化这一过程。例如创建一个名为`assert_exists()`的方法用来确认特定图片是否存在屏幕上: ```python def assert_exists(template, msg=""): try: pos = exists(template) if not pos: raise AssertionError(msg) except Exception as e: print(f"Assertion failed: {msg}") raise e ``` 此段代码实现了基本的存在性校验逻辑,如果未能发现指定模板则抛出异常提示失败原因[^2]。 #### 给父类添加ADB命令的支持 为了让整个框架更加灵活易用,还可以考虑扩展基础类的功能使其具备调用Android Debug Bridge (ADB)的能力。这允许开发者直接发送指令到安卓终端从而获取更多控制权或者辅助信息。具体做法是在基底类中加入相应成员变量保存Shell对象以便后续调用: ```python from airtest.core.api import device as current_device class BaseTestCase(unittest.TestCase): @classmethod def setUpClass(cls): cls.shell = current_device().shell ``` 这样做的好处在于可以在子类里方便地访问这个属性进而发出各种类型的请求。 #### Poco常用API概览 - `agent.wait_for_application_launch()`: 等待应用程序完全启动后再继续下一步骤; - `poco(text="Start").click()`: 查找具有给定文本标签的对象并模拟点击事件; - `poco("ButtonName").get_text()`: 获取按钮上的文字内容作为返回值; - `poco.swipe([start_x,start_y],[end_x,end_y])`: 执行从起点坐标至终点坐标的拖拽手势; 上述列举了一些常用的接口供参考,实际上还有许多其他功能等待探索[^4]。 #### 商店测试样例 假设要对某款手机App内的商品详情页做一系列检查工作,则可能涉及如下几个方面: - 验证首页推荐位展示正常; - 测试搜索栏输入关键词后的响应情况; - 对比不同分类列表项之间的差异; - 跳转至支付环节前的各项参数设置正确与否等等。 每一步都需要精心设计对应的判断依据以确保最终结果的有效性准确性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值