ATX 利用 ATX 做安卓电量自动化测试

剪烛 · 2019年05月23日 · 最后由 codeskyblue 回复于 2019年05月26日 · 3964 次阅读

背景

安卓的 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
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
共收到 12 条回复 时间 点赞
小胖。 回复

这个一堆被墙的资源啊~

剪烛 回复

batterystats 有提供 python 脚本,将耗电数据生成 html

前人栽树,后人乘凉

无线 adb 不需要 root 吧,貌似直接 adb tcpip 就可以实现了。是我理解错场景了嘛

Silent Blue 回复

大树底下好乘凉~~
能否告知下,大树的地址在哪里?😂

我记得无线连接也不用 root

确实是不用 root,不知道为什么我映像中是要 root 的 [手动捂脸],那看来直接用 wifi 连接 adb 就好了。用 ATX 有点多此一举了。

simple 回复

对不起,确实不用 root,我记错了。

剪烛 回复

没关系,别紧张,感谢楼主分享,期待后续分析一下 ATX 如何收集电量的,有没有受安卓高版本变更的影响👍

剪烛 #11 · 2019年05月24日 Author
simple 回复

😂 初衷只是觉得掐表太麻烦。你说的安卓高版本里边电量计算有问题么?是否是有大量电量未计入 Estimated power use 中?表现在 Unaccounted 这一项中。我们在 9.0 的手机发现会有这种情况

你说的 timeout 不生效的 issue 已经修掉了?adb tcpip 的确也能用,不过 adb 的稳定性感觉没这么好,偶尔会断掉。另外类似 oppo 手机还有 10 分钟不用自动断开的问题?

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册