版权声明:容许转载,但转载必须保留原连接;请勿用做商业或者非法用途html
经过阅读本篇教程,你将会了解到:android
Poco支持直接对任何Android原生应用(非游戏引擎、非webview)进行UI层次结构识别,用法上与Poco在其余平台上如出一辙。git
注:基于webview的应用比较特殊(如微信小程序或浏览器),请见文档Poco如何支持WebView检视。web
在AirtestIDE的Poco Assistant
面板中选择Android模式以后,AirtestIDE会开始自动向手机里安装Pocoservice.apk
和Pocoservice-test.apk
,部分型号手机须要手动点击确认安装才能顺利安装。小程序
安装完成后,AirtestIDE会自动启动PocoService
,它会定时抓取 Android上界面的层次结构信息,稍等片刻就能够在AirtestIDE界面中看到当前界面的UI层次结构树。微信小程序
点击UI树上的任意节点,能够Log面板中看到该节点的全部属性,同时设备画面中将出现方框,把对应位置框选出来,方便定位节点。api
若是Pocoservice
启动失败,会致使Pocoservice.apk
反复重装,此时能够检查如下几个方面:浏览器
Android SDK API
≥ 19,即Android 4.4及以上poco\poco\drivers\android\lib
目录下可以找到这两个APKYosemite
输入法设置为默认输入法+当前输入法在这里咱们提供一个使用Poco对一个计算器应用编写代码的例子,点这里下载示例App(calculator),并事先将此App安装到手机上。微信
按照刚才说的,在AirtestIDE中的Poco辅助窗下拉菜单中选择Android
后,AirtestIDE将会自动启动Pocoservice
,显示出当前的UI控件层次结构树。此后就能够在AirtestIDE中进行Poco语句的编写和录制了。网络
下面这段代码例子将演示一个简单的功能:点击calculator的界面,实现一个1+1=2的运算验证。
from poco.drivers.android.uiautomation import AndroidUiautomationPoco poco = AndroidUiautomationPoco() poco('com.google.android.calculator:id/digit_1').click() poco('com.google.android.calculator:id/op_add').click() poco('com.google.android.calculator:id/digit_1').click() poco('com.google.android.calculator:id/eq').click() result = poco('com.google.android.calculator:id/formula').get_text() assert_equal(result, '2', '1+1=2 ^^')
在这段代码中,咱们使用poco = AndroidUiautomationPoco()
初始化了一个poco对象,而后分别选取了1
+
1
按钮进行点击操做后,使用get_text
接口很是轻松地获取到告终果控件的值2
,而且使用断言语句进行结果验证。
这个例子很是简单,更多poco用法和例子请见poco tutorial。
在上一篇教程(4、如何在Android手机上进行测试(上)-多机协做)中,咱们提到了一个脚本里能够链接多台Android手机,而且用set_current
接口在手机之间切换:
from airtest.core.api import connect_device dev1 = connect_device("Android://127.0.0.1:5037/serialno1") # 连上第一台手机 dev2 = connect_device("Android://127.0.0.1:5037/serialno2") # 第二台手机 set_current(1)
假如咱们在连上手机后,想要分别使用poco去获取控件和点击这两台不一样的手机,此时须要分别初始化两个poco,就像这样:
from airtest.core.api import connect_device dev1 = connect_device("Android://127.0.0.1:5037/serialno1") # 连上第一台手机 poco1 = AndroidUiautomationPoco(dev1) dev2 = connect_device("Android://127.0.0.1:5037/serialno2") # 第二台手机 poco2 = AndroidUiautomationPoco(dev2) set_current(1) # 切到第二台手机 poco2('com.google.android.calculator:id/digit_1').click()
同理,假如不使用connect_device
接口链接手机,而是经过直接在命令行中传入--device
来自动链接手机的话,不须要在代码里重复执行connect_device
。此时只须要分别获取到设备对象,而且使用设备对象初始化poco就能够了:
from airtest.core.api import G print(G.DEVICE_LIST) # 假设当前总共有2台手机 poco1 = AndroidUiautomationPoco(G.DEVICE_LIST[0]) poco2 = AndroidUiautomationPoco(G.DEVICE_LIST[1])