背景

安卓的 batterystats 电量测试工具因为必须 usb 离线才能统计到电量,对于依靠 adb 连接才能执行的自动化脚本,自动化测试电量基本不可能实现(无线 adb 可以,但是需要 root,实际不需要 root 可以实现无线 adb 连接,感谢提醒)。ATX 的组件 atx-agent 运行在手机上,向外提供操作手机的 api,其中可以执行 shell 指令。在同一 wifi 网段下,可以让手机保持脱机状态,执行电量测试的指令,从而达到电量测试的操作效果。

环境要求

  1. ATX 相关参考https://testerhome.com/topics/11357
  2. batterystats historian2 相关操作https://testerhome.com/topics/3733

操作方法

  1. 手机断开 usb

  2. 执行脚本

    #使用手机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")
    

TIPS

  1. 测试时间有误差
    bugreport 命令执行时间长,大概有一两分钟吧,测试时间不会很精确。建议做长时间的电量测试

  2. 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

  1. jquery 相关自己去找替代的 cdn 地址替换
  2. https://www.google.com/jsapi 改成 https://www.google.cn/jsapi


↙↙↙阅读原文可查看相关链接,并与作者交流