pyminitouch

项目 github

一开始使用 minitouch 纯粹是为了适应一些特殊场景的需要,例如高效的设备操作、模拟硬件操作等等。(同时也为了解决这个问题 https://testerhome.com/topics/17247

但 minitouch 的使用体验实在是有点太差了,每次都要重复给手机安装指定版本的 minitouch、建立 socket、然后再编辑可读性极差的操作命令(形如'd 0 500 500 50\nc\nd 1 500 600 50\nw 5000\nc\nu 0\nu 1\nc\n'),当遇上多手机操作的时候更是抓瞎。

所以,开发了这个 minitouch 的 python 操作库,用于简化 minitouch 的使用流程。虽然 minitouch 的用途还是比较局限,但是想着可能有人会需要这个东西,就把它共享在这里吧~

目标

该项目将对 minitouch 进行封装,致力于降低使用成本,使这个库能够更好的被利用起来。

TL;DR

以前

是个非常繁琐的流程。

现在

from pyminitouch import safe_device


_DEVICE_ID = '123456F'
device = MNTDevice(_DEVICE_ID)

# single-tap
device.tap([(400, 600)])
# multi-tap
device.tap([(400, 400), (600, 600)])
# set the pressure, default == 100
device.tap([(400, 600)], pressure=50)

# 可以直接用简洁的API调用minitouch提供的强大功能!

更多使用方式见 demo.py

安装

请使用 python3

pip install pyminitouch

实现原理

其实跟 TLDR 提到的"以前的"流程是一样的。可以到项目主页看看源码 https://github.com/williamfzc/pyminitouch

意义

minitouch 是 openstf 基于 ndk + android 开发的用于模拟人类点击行为的操作库。这个库以高稳定性、反应快著称,比起 adb 操作与 uiautomator 都要更灵敏,被广泛用于 android 设备的精细操作。

然而,因为其使用与安装的方式都较为繁琐,且无法定位到元素,使得它在自动化的应用领域上远远比不上 uiautomator。

但他的实现机制与其他模拟方式不同,能够真正模拟物理点击的效果(uiautomator 属于软件层面上的模拟),更加接近真实点击的效果。举个例子,打开 开发者模式 - 显示点击位置,同类产品在模拟点击时不会有"小圆圈",而 minitouch 有,表现与真实人手点击一致。

bug & 建议

欢迎在评论或者 github 提 issue 给我 :)


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