Hamibo自动化手机工具的使用及介绍【自定义代码解析】

Hamibot 是一款开源的自动化手机测试脚本项目,是一款 Android 平台 JavaScript 自动化工具,无需 root,无需编程基础,在脚本市场内安装脚本即可运行。适用于安卓系统的自动化工具,能操控任意 APP,实现自动化操作,提高工作效率,可以允许脚本查询在手机上完美的运行,兼容多种代码模块并提供丰富的第三方库


在这里插入图片描述

该平台目前只支持安卓手机,脚本代码可以从脚本市场中获取,也可以自己在控制台中编写js代码

,并且官方也提供了详细的开发文档

在这里插入图片描述

脚本市场

在脚本市场里有其他用户已封装好的脚本代码可供直接订阅使用

在这里插入图片描述

自定义脚本

有了官方的开发文档,我们也可以尝试着自己写去一些有意思的挂机刷视频文章脚本和整人脚本

  1. 在手机端下载Hamibot:https://dl.hamibot.com/com.hamibot.hamibot.apk
  2. 关联机器人:切换到机器人页面,点击添加机器人,输入配对码即可
  3. 编写脚本代码:脚本代码可以从脚本市场中获取,也可以自己在控制台中编写js代码

常用方法

Hamibot中有一些方法需要ROOT权限才能调用
方法名前带有Root字段的方法表示该方法需要ROOT权限,这里主要使用的是非ROOT方法

//获取这个控件
var widget = id('xxx').findOne();
//获取其中心位置并点击
click(widget.bounds().centerX(), widget.bounds().centerY());
//如果用root权限则用Tap

开发文档:https://docs.hamibot.com/

click(x, y)

  • x 要点击的坐标的 x 值

  • y 要点击的坐标的 y 值

  • //点击确定
    var f1 = text('确定')
        .findone()
        .click();
    

模拟点击坐标(x, y),并返回是否点击成功。只有在点击执行完成后脚本才继续执行。

一般而言,只有点击过程(大约 150 毫秒)中被其他事件中断(例如用户自行点击)才会点击失败。

使用该函数模拟连续点击时可能有点击速度过慢的问题,这时可以用press()函数代替。

longClick(x, y)

  • x 要长按的坐标的 x 值
  • y 要长按的坐标
  • 的 y 值

模拟长按坐标(x, y), 并返回是否成功。只有在长按执行完成(大约 600 毫秒)时脚本才会继续执行。

一般而言,只有长按过程中被其他事件中断(例如用户自行点击)才会长按失败。

press(x, y, duration)

  • x 要按住的坐标的 x 值
  • y 要按住的坐标的 y 值
  • duration 按住时长,单位毫秒

模拟按住坐标(x, y), 并返回是否成功。只有按住操作执行完成时脚本才会继续执行。

如果按住时间过短,那么会被系统认为是点击;如果时长超过 500 毫秒,则认为是长按。

一般而言,只有按住过程中被其他事件中断才会操作失败。

一个连点器的例子如下:

//循环100次
for (var i = 0; i < 100; i++) {
  //点击位置(500, 1000), 每次用时1毫秒
  press(500, 1000, 1);
}

swipe(x1, y1, x2, y2, duration)

  • x1 滑动的起始坐标的 x 值
  • y1 滑动的起始坐标的 y 值
  • x2 滑动的结束坐标的 x 值
  • y2 滑动的结束坐标的 y 值
  • duration 滑动时长,单位毫秒

模拟从坐标(x1, y1)滑动到坐标(x2, y2),并返回是否成功。只有滑动操作执行完成时脚本才会继续执行。

gesture(duration, [x1, y1], [x2, y2], …)

  • duration 手势的时长
  • [x, y] … 手势滑动路径的一系列坐标

模拟手势操作。例如gesture(1000, [0, 0], [500, 500], [500, 1000])为模拟一个从(0, 0)到(500, 500)到(500, 100)的手势操作,时长为 2 秒。

RootAutomator.swipe(x1, y1, x2, y2[, duration, id])

  • x1 滑动起点横坐标
  • y1 滑动起点纵坐标
  • x2 滑动终点横坐标
  • y2 滑动终点纵坐标
  • duration 滑动时长,单位毫秒,默认值为 300
  • id 多点触摸 id,可选,默认为 1

模拟一次从(x1, y1)到(x2, y2)的时间为 duration 毫秒的滑动

RootAutomator.press(x, y, duration[, id])

  • x 横坐标
  • y 纵坐标
  • duration 按下时长
  • id 多点触摸 id,可选,默认为 1

模拟按下位置(x, y),时长为 duration 毫秒。

RootAutomator.longPress(x, y, duration[, id])

  • x 横坐标
  • y 纵坐标
  • duration 按下时长
  • id 多点触摸 id,可选,默认为 1

模拟长按位置(x, y)。

home()

  • 模拟按下手机home

back()

  • 模拟手机返回上一页

toast(parameter)

  • 在手机上显示parameter信息

  • toast("卷寺你");
    

alert(parameter)

  • 弹框parameter信息

console控制台

  • console.show():在手机中显示控制台

  • console.hide():隐藏关闭显示台

  • console.log(parameter):将parameter显示在控制台中

    • console.show();
      console.log("大煞笔");
      

获取时间—Date

  • // 获取时间
    var d = new Date();
    var hour= d.getHours();//得到小时数
    console.log(hour+'点');
    console.log(hour==13);
    var minute= d.getMinutes();//得到分钟数
    console.log(minute+'分钟');
    var second= d.getSeconds();//得到秒数
    console.log(second+'秒');
    

获取控件位置信息

由于每个软件的控件不一,获取控件的位置信息可以通过手机开发者模式下自带的坐标指针获取,也可以通过函数方法获取,但函数方法有些软件并不适用

用文本属性来定位按钮控件、文本控件通常十分有效。但是,如果一个控件是图片控件,比如 Hamibot 主界面右上角的日志图标,它没有文本属性,这时需要其他属性来定位他。我们如何查看他有什么属性呢?首先打开悬浮窗和无障碍服务,点击蓝色的悬浮窗图标,然后再点击绿色的布局分析图标,然后点击布局范围分析,可以看到以下界面:

Hamibot 布局分析

之后我们点击日志图标,可以看到它的属性:

Hamibot 控件属性

// 获取这个控件
var position = text('链接').findOne();
// 获取其中心位置并点击
var x = position.bounds().centerX()
var y = position.bounds().centerY()
通过使用OCR实现定位文本控件坐标并点击

新增于:Hamibot 1.2.2
更多功能可自行探索

// 识别并定位文字坐标,返回x,y坐标
function ocrClick(str) {
  var x0;
  var y0;
//  console.show();

  if (!requestScreenCapture()) {
    toastLog('没有授予 Hamibot 屏幕截图权限');
    hamibot.exit();
  }
  log('开始截屏');
  const img = captureScreen();
  toastLog('开始识别');
  const res = ocr.recognize(img);
  var datas = res["results"]; // 将结果取出
  // alert(datas);
  for (var i = 0; i < datas.length; i++) {
    var o = datas[i]; // 遍历各个结果对象
    if (o["text"] == str) {// 取出文本类型为 str 的对象
      // 取出边界属性
      var position = o["bounds"];
      // 计算出 x, y 坐标
      y0 = (position["bottom"] + position["top"]) / 2;
      x0 = (position["left"] + position["right"]) / 2;
      
//       click(x0, y0); // 点击文本对象
//       sleep(1000);
//       log(position);
//       alert(x0, y0);
       
      return [x0,y0];
    }
  }
  // alert(res);
  log(res);
//   hamibot.exit();
}
// 调用方法并返回一个带有坐标信息的列表,并点击 “前往控制台”
var obj = ocrClick('前往控制台');
var x = obj[0];
var y = obj[1];
click(x,y);
alert(x, y);

实例代码①抖音快手刷短视频

ps:若想实现模拟快速滑动屏幕实现甩动效果只需要在 gesture(duration, [x1, y1], [x2, y2], …); 中把duration时间设置短一些即可

launchApp('快手极速版'); // 打开手机中的 快手极速版
var i = 0;
var num = 0;
var loop = true;
var time = 103;
var d;
var hour;
console.show();

// while (i < 500) {
while (loop) {
  d = new Date();
	hour = d.getHours();//得到小时数
  if(hour == time) {loop=false;}
 	sleep(1000);
  if (!(desc("发现").exists())) {
  	back();
	} else {
    	var num = Math.round(Math.random() * 4001 + 78);
//   	toast(num);
  	console.log('第'+(++i)+'个视频 耗时:'+((num/1000)+2).toFixed(3)+'秒');
  	sleep(num);
    sleep(1000);
    swipe(467, 1504, 467, 90, 400);
    
  }
}
console.hide()
home();
// Math.round(Math.random() * 1440 + 1400)

实例代码②手机自启动解锁屏保

说明

  • 手机的自动开机解锁【需要有密码】
    • 思路【总体上还是模拟用户的点击操作,需要Hamibot有自启动的权限】
      • 唤醒点击并滑动至密码处
      • 获取密码下方各个数字的按键坐标
      • 模拟点击坐标
  • 由于不同手机的锁屏密码位置不确定,故并不一定适用于每一台手机

代码

// 点击屏幕
device.wakeUp();
sleep(1000);
swipe(467, 1504, 467, 90, 400);
sleep(1000);

var pwd = "122690"; // 锁屏密码
var plength = pwd.length
for(var i = 0; i < plength; i++){
  sleep(20)
  switch(pwd[i]-0){
    case 1:
      press(221,1450,100);
      break;
    case 2:
      press(540,1450,100);
      break;
    case 3:
      press(859,1450,100);
      break;
    case 4:
      press(221,1680,100);
      break;
    case 5:
      press(540,1680,100);
      break;
    case 6:
      press(859,1680,100);
      break;
    case 7:
      press(221,1890,100);
      break;
    case 8:
      press(540,1890,100);
      break;
    case 9:
      press(859,1890,100);
      break;
    case 0:
      press(537,2093,100);
      break;
    default:
      toast("密码输入有误程序中断");
      exit();
  }
}
Hamibot是一种人工智能聊天机器人,可以用于开发各种应用和解决方案。以下是关于如何开发Hamibot的简要教程: 第一步是了解Hamibot的基本概念和原理。Hamibot利用自然语言处理技术,通过与用户进行对话来实现交互。了解如何配置和启动Hamibot,并了解其常用的API和功能是很重要的。 第二步是设计并创建自定义技能。Hamibot的核心功能是根据用户的需求提供相应的响应和回答。开发者需要设计并编写自定义技能,以指导Hamibot如何理解和回应用户的问题和指令。可以使用Hamibot提供的开发工具来创建技能,并在开发过程中进行测试和调试。 第三步是数据处理和训练模型。为了提高Hamibot的准确性和智能性,开发者可以使用机器学习和深度学习算法对相应的数据进行处理和训练。这包括对自然语言理解和生成模型进行训练,以提升Hamibot在理解和回答用户问题时的表现。 第四步是集成和部署。当开发者完成了自定义技能和模型的开发和训练后,可以将其集成到Hamibot平台上,并进行相应的部署。开发者可以选择将Hamibot部署在自己的服务器上,也可以使用Hamibot提供的云服务进行部署。 最后一步是监测和优化Hamibot的性能。一旦Hamibot部署成功,开发者应该定期监测和评估其性能,以确保其运行正常并能够提供准确和满意的回答。如果发现问题或有进一步的改进空间,开发者可以根据需要进行优化和更新。 总之,开发Hamibot需要对其基本原理和功能有一定了解,并需要进行技能设计、数据处理和模型训练、集成和部署等一系列步骤。通过不断的测试和优化,开发者可以开发出一个准确、智能且可靠的Hamibot
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

進擊的小鹿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值