使用USB HID硬件实现rpa、自动化测试等自动化脚本
在做自动化脚本中,很多app都会自动检测是否开启手机调试模式,是否root,甚至有的还会检测是否开启了无障碍。今天给大家介绍一种不需开启debug模式,不需root,不需开启无障碍的自动化脚本方案。USB hid的原理比较简单,简单来说就是用一个USB硬件来模拟鼠标和键盘,这个USB硬件相当于是一个集成了鼠标和键盘的外置硬件(类比我们的USB鼠标和USB键盘),但实际并没有鼠标滑轮和键盘。这个US
在做自动化脚本中,很多app都会自动检测是否开启手机调试模式,是否root,甚至有的还会检测是否开启了无障碍。今天给大家介绍一种不需开启debug模式,不需root,不需开启无障碍的自动化脚本方案。
一、USB HID实现自动化脚本的原理
USB hid的原理比较简单,简单来说就是用一个USB硬件来模拟鼠标和键盘,这个USB硬件相当于是一个集成了鼠标和键盘的外置硬件(类比我们的USB鼠标和USB键盘),但实际并没有鼠标滑轮和键盘。这个USB硬件和手机通信,手机上的自动化脚本会发送指令给USB硬件,让USB硬件来执行点击和按键等操作。
二、实现过程
注册冰狐智能辅助账号
由于冰狐智能辅助可以直接支持各种USB HID,不需要额外安装其他app,所以我们使用冰狐智能辅助来写USB HID的脚本,使用的是js,所以需要先去冰狐官网注册一个账号才能写后续的代码。
查看USB HID开发文档
冰狐的USB HID文档非常简单,就三个函数UsbClient、connect、send,有一点要注意,冰狐提供的是通用USB通信接口,可以和任意USB硬件对接。在发送数据时发送的是字符串或者整数,下一节我们将详细介绍具体如何和USB硬件通信
手机和USB硬件通信
可以直接实现点击,滑动,back,home,找图,文字识别等等很多功能。废话不多说,直接给出可以运行的js代码如下:
function main() {
var usb = new UsbClient();
var b = usb.connect();
console.log('connect:', b);
if (b) {
usbHome(usb);
}
console.log('end')
}
function usbClick(usb, x, y, duration) {
if (null == duration) {
duration = 200
}
usbMouseMove(usb, x, y);
sleep(duration);
usbMouseUp(usb);
}
function usbSwipe(usb, x1, y1, x2, y2, duration) {
if (null == duration) {
duration = 200
}
var cmd = `f${x1},${y1},${x2},${y2},${duration}`;
console.log('cmd:' + cmd)
var ret = usb.send(cmd)
console.log('send ret:', ret)
}
function usbHome(usb) {
usbKeyDown(usb, 135, 40);
sleep(100)
usbKeyUp(usb);
}
function usbBack(usb) {
usbKeyDown(usb, 131, 42);
sleep(100)
usbKeyUp(usb);
}
function usbRecentApps(usb) {
usbKeyDown(usb, 4, 43);
sleep(100)
usbKeyUp(usb);
}
function usbCopy(usb) {
usbKeyDown(usb, 1, 6);
sleep(100)
usbKeyUp(usb);
}
function usbPaste(usb) {
usbKeyDown(usb, 1, 25);
sleep(100)
usbKeyUp(usb);
}
function usbCut(usb) {
usbKeyDown(usb, 1, 27);
sleep(100)
usbKeyUp(usb);
}
function usbSelectAll(usb) {
usbKeyDown(usb, 1, 4);
sleep(100)
usbKeyUp(usb);
}
function usbKeyDown(usb, modifier, keyCode) {
var ret = usb.send(`d${modifier},${keyCode}`)
console.log('send ret:', ret)
}
function usbKeyUp(usb) {
var ret = usb.send('u')
console.log('send ret:', ret)
}
function usbMouseMove(usb, x, y) {
x = parseInt(x * 10000 / rsScreenWidth);
y = parseInt(y * 10000 / rsScreenHeight);
var cmd = `e${x},${y}`;
console.log('cmd:' + cmd)
var ret = usb.send(cmd)
console.log('send ret:', ret)
}
function usbMouseUp(usb) {
var cmd = 'v';
console.log('cmd:' + cmd)
var ret = usb.send(cmd)
console.log('send ret:', ret)
}
三、总结
本文介绍了一种超低成本的USB HID实现自动化脚本方案,并给出了详细源码,如果大家有什么问题,可以直接在评论区和我交流,谢谢!
更多推荐




所有评论(0)