使用ConnectionTracer重写设备监听层,使用 socket 替代原有的 subprocess 与 os 的方式。
在 android 测试里,一个非常经常遇到的问题就是设备的监听与管理。在 python 工具开发层面,几乎每个工具都要维护一部分代码用于设备的管理,非常麻烦。不像 java 有官方的 ddmlib 加持,python 在不同项目中的实现往往根据不同人的喜好而各不相同。虽然 google 官方也推出过官方版本的python 版本 adb,但用户并不多,文档相当不友好。
于是,为了设备管理更加简单与方便,且能够很方便地合入到现有的工具中,基于 python3 开发了whenconnect。目前,我们使用这个库进行设备监听,效果还是挺符合预期的。
这个库提供一个简洁方便的方案以解决设备连接与断开时的监听工作,例如安装应用、启动应用、杀死进程,或是定制任何你希望的。它提供了设备插拔的 hook,能够自由绑定到现有的函数上。如果你希望,在设备 123456F 成功连接电脑后执行函数 A,你只需要:
from whenconnect import when_connect, start_detect
def A(device):
print('call function A', device)
# 开始监听
start_detect()
# 事件注册
when_connect(device=['123456F'], do=A)
# 你的其他逻辑
while True:
pass
这样,在设备连接上时就会自动执行函数 A,且将设备 ID 作为参数传递给它。当然,如果你希望监听所有设备,你可以:
when_connect(device='any', do=A)
如果要整合到现有工程中,你只需要安装好 whenconnect,再定制合适的 hook 函数并配置,就可以自由地监听设备了!
pip install whenconnect
更多用法可以参考这里
项目首页:这里
有任何问题欢迎交流与反馈,还是希望这个工具能做得更好吧:)
新增了同步获取当前已连接设备的方法
from whenconnect import get_devices
device_list = get_devices()