Airtest之使用Poco测试Android原生应用
>以下基于 python3.8;airtestIDE1.2.9;airtest1.1.11;pocoui1.0.82
什么是Android原生应用,简单说就是没有使用Webview,也不是游戏app。如果一个App有Webview则是混合应用,目前市面上大部分App是混合应用。
首先连接设备,可以参考之前文章:AirtestIDE连接安卓真机及常见问题
连接好设备后,在AirtestIDE左下的Poco辅助窗,选择Android,此时AirtestIDE会向手机安装Pocoservice.apk,有些手机需要给予权限后才能安装成功,另外会弹一个版本相关的提示,点确定即可。
之后AirtestIDE会启动Pocoservice,它会每隔几秒抓取手机当前界面的控件树信息,并更新到Poco辅助窗下面。
如果Pocoservice启动失败,可能会导致Pocoservice.apk反复重装,此时可以检查以下几个方面:
-
是否Android版本过低,Poco支持Android SDK API ≥ 19,即Android 4.4及以上
-
请关闭PC或手机上连接的网络代理Proxy,否则可能导致连不上Poco
-
可以尝试卸载手机中的2个Pocoservice相关的APK后,手工重新安装一遍,在AirtestIDE目录下的\poco\drivers\android\lib目录下能够找到这两个APK
-
部分vivo和oppo手机需要将手机设置-输入法设置中,把Yosemite输入法设置为默认输入法+当前输入法
一个计算器的脚本实例
每个手机都自带计算器,首先我们需要获取手机上计算器应用的包名。打开计算器,在PC中输入命令:
adb shell dumpsys activity top
之后我们可以在输出中找到包名,每个系统内容可能不太一样,我的是com.miui.calculator
接下来我们就写一个1+1=2的例子
# -*- encoding=utf8 -*- from airtest.core.api import * from poco.drivers.android.uiautomation import AndroidUiautomationPoco # 连接设备、初始化日志路径 auto_setup(__file__, logdir=True, devices=["Android:///"]) # 启动计算器 start_app("com.miui.calculator") sleep(3) # 初始化安卓原生poco poco = AndroidUiautomationPoco(use_airtest_input=True, screenshot_each_action=False) # 依次点1+1=,这块代码可以使用IDE左下的录制功能 poco("com.miui.calculator:id/digit_1").click() poco("com.miui.calculator:id/op_add").click() poco("com.miui.calculator:id/digit_1").click() poco("com.miui.calculator:id/btn_equal_s").click() # 获取结果控件的文本并断言,可以使用IDE左下的锁定功能,并找到结果控件 r = poco("com.miui.calculator:id/result").get_text() assert_equal("= 2", r, "结果=2")
录制和查找控件不会用可以看之前文章:AirtestIDE基本功能(一)
写完后运行,正常执行完毕。点击生成报告
---------------------------------------------------------------------------------
关注微信公众号即可在手机上查阅,并可接收更多测试分享~