安卓的 batterystats 电量测试工具因为必须 usb 离线才能统计到电量,对于依靠 adb 连接才能执行的自动化脚本,自动化测试电量基本不可能实现(无线 adb 可以,但是需要 root,实际不需要 root 可以实现无线 adb 连接,感谢提醒)。ATX 的组件 atx-agent 运行在手机上,向外提供操作手机的 api,其中可以执行 shell 指令。在同一 wifi 网段下,可以让手机保持脱机状态,执行电量测试的指令,从而达到电量测试的操作效果。
手机断开 usb
执行脚本
#使用手机ip连接设备
d = uiautomator2.connect("手机IP:7912")
#清空电量数据
d.shell("dumpsys batterystats --reset")
#开启所有服务(非必要)
d.shell("dumpsys batterystats --enable full-wake-history")
#操作
# 各种手机操作,api参考[https://github.com/openatx/uiautomator2](https://github.com/openatx/uiautomator2)
# 生成数据
d.shell("bugreport > /sdcard/bugreport.txt",timeout=600)
#拉取文件
d.pull("/sdcard/bugreport.txt", "bugreport.txt")
测试时间有误差
bugreport 命令执行时间长,大概有一两分钟吧,测试时间不会很精确。建议做长时间的电量测试
d.shell("bugreport > /sdcard/bugreport.txt",timeout=600) 可能会出错
因为命令耗时太长了。timeout 好像没有 set 进去,可以直接跳去 uiautomator2 源码 shell 方法调用 request.post 的地方加下 timeout 就不会报错了。已经提了 issuehttps://github.com/openatx/uiautomator2/issues/353 ,等待官方 fix。
3.battery historian2 环境安装好了以后,大概率因为墙的原因,不那么好用,那么,你只需要替换下 js 资源就可以了。
/go/src/github.com/google/battery-historian/templates/base.html