版权声明:该文章为AirtestProject原创文章;允许转载,但转载必须注明“转载”并保留原链接
前面我们已经介绍了基于图像识别的测试框架Airtest,通过图像识别,已经可以编写大部分的测试脚本。但是在某些特殊情况下,例如对于游戏或App里的动态元素,通过图像识别定位较为困难。所以,我们的Airtest Project解决方案也提供了另外一种基于UI控件搜索的自动化框架 Poco,下面我们来通过一个示例来看看Poco如何使用。
对于Android和iOS平台上的原生应用(包括系统界面),可以直接使用Poco
准备工作:下载 Airtest IDE,解压并运行
connect
,即可在Airtest IDE 中看到设备屏幕。现在进入Android主界面,点击左侧的Poco辅助窗,选择Android
模式,即可看到当前界面的UI树结构:Poco Inspector
按钮,即可对页面上的UI控件进行定位:# Airtest IDE自动插入的初始化语句 from poco.drivers.android.uiautomation import AndroidUiautomationPoco poco = AndroidUiautomationPoco(use_airtest_input=True, screenshot_each_action=False) # 点击设置图标 poco(desc="设置").click()
如上所示代码,即可通过UI属性进行元素定位,并进行操作。
关于使用Poco测试Android原生应用的更多细节,可以参考教程(五、如何在Android手机上进行自动化测试(下))。
对于iOS原生应用,Poco同样可以获取到UI层级结构。除了下载运行Airtest IDE之外,我们还需要运行ios-Tagent项目,才可以获取到iOS界面的UI信息。具体步骤如下
iproxy
命令启动代理iproxy 8100 8100
如果希望在另外一台电脑连接iOS手机,可以安装wdaproxy
iOS
模式,即可看到当前界面的UI树结构:由于游戏的界面是通过游戏引擎渲染出来的,游戏界面没有系统原生的控件信息,所以对于游戏,我们需要接入 poco-sdk 才能获取到游戏界面中的控件信息。下面以Unity开发的手游为例,介绍如何在Android和iOS平台进行连接。
Unity
模式,即可看到当前界面的UI树结构:from poco.drivers.unity3d import UnityPoco poco = UnityPoco()
之后的脚本编写,就可以利用Poco提供的API对游戏界面上的元素进行操作了
iproxy 8100 8100
iproxy 5001 5001
这里的iproxy相当于adb中的forward
Unity
模式,即可看到当前界面的UI树结构:Poco在大多数平台中,需要事先接入Poco-SDK才可正常使用 ,在少数平台(如Android与iOS原生APP)可直接使用Poco,目前支持平台如下:
平台 | Airtest | Poco |
---|---|---|
Cocos2dx-js, Cocos2dx-lua | √ | 接入文档 |
Unity3D | √ | 接入文档 |
Android 原生APP | √ | 直接使用 |
iOS | √ | 帮助文档 |
Egret | √ | 接入文档 |
Other engines | √ | 可自行接入 |
WeChat Applet&webview | √ | 参考文档 随着微信更新可能会失效 |
Windows, MacOS | √ | 敬请期待 |
Netease | √ | 网易内部引擎帮助文档 |
在文档Poco支持平台中,可以获得最新更新的平台支持情况。
请查看Poco官方文档获得更多教程与API信息,这里是一些关注度较高的内容:
原文:https://www.cnblogs.com/AirtestProject/p/12017563.html