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

剪烛 · May 23, 2019 · Last by codeskyblue replied at May 26, 2019 · 1256 hits

背景

安卓的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 条回复 时间 点赞
剪烛 #2 · May 23, 2019 作者
小胖。 回复

这个一堆被墙的资源啊~

剪烛 回复

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

前人栽树,后人乘凉

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

Silent Blue 回复

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

我记得无线连接也不用root

剪烛 #8 · May 24, 2019 作者

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

剪烛 #9 · May 24, 2019 作者
simple 回复

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

剪烛 回复

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

剪烛 #11 · May 24, 2019 作者
simple 回复

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

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

需要 Sign In 后方可回复, 如果你还没有账号请点击这里 Sign Up