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

这篇具有很好参考价值的文章主要介绍了Hamibo自动化手机工具的使用及介绍【自定义代码解析】。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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


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

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

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

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

脚本市场

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

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

自定义脚本

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

  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 主界面右上角的日志图标,它没有文本属性,这时需要其他属性来定位他。我们如何查看他有什么属性呢?首先打开悬浮窗和无障碍服务,点击蓝色的悬浮窗图标,然后再点击绿色的布局分析图标,然后点击布局范围分析,可以看到以下界面:

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

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

// 获取这个控件
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有自启动的权限】
      • 唤醒点击并滑动至密码处
      • 获取密码下方各个数字的按键坐标
      • 模拟点击坐标
  • 由于不同手机的锁屏密码位置不确定,故并不一定适用于每一台手机

代码文章来源地址https://www.toymoban.com/news/detail-483469.html

// 点击屏幕
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();
  }
}

到了这里,关于Hamibo自动化手机工具的使用及介绍【自定义代码解析】的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【Jenkins】Jenkins自动化工具介绍

    在现代软件开发中,自动化已经成为了一个核心理念。然而在实际开发中,我们经常要一边开发一边测试,当然这里说的测试并不是程序员对自己代码的单元测试,而是同组程序员将代码提交后,由测试人员测试;或者就是前后端分离后,经常会修改接口,然后重新部署;

    2024年04月13日
    浏览(53)
  • Python开源自动化工具Playwright安装及介绍

    目录 前言 1、Playwright介绍 2、Playwright安装 3、实操演示 4、小结 总结: 微软开源了一个非常强大的自动化项目叫 playwright-python 它支持主流的浏览器,包含: Chrome、Firefox、Safari、Microsoft Edge 等,同时支持以 无头模式、有头模式 运行,并提供了同步、异步的 API,可以结合 P

    2024年02月16日
    浏览(42)
  • Ansible自动化运维工具介绍与部属

    ansible是新出现的自动化运维工具,基于python开发,集合了从多的运维工具(puppet、chef、func、fabric)的优点,实现了批量系统配置、批量程序部署、批量运行命令等功能。 ansible是基于paramiko开发的,并且基于模块化工作,它本身没有批量部署的能力。真正具有批量部署的是

    2024年02月07日
    浏览(45)
  • NO.3 robot framework编辑工具RIDE简单使用、RIDE快捷键介绍及创建一个简单的UI自动化测试用例

    一、Ride简单使用及快捷键 1.启动ride 启动ride方法: 1) 通过界面图标 2) dos命令行:进入dos窗口,输入ride.py,按回车即可 2.创建新工程 快捷键:ctrl+n 3.创建测试套(suite)快捷键:ctrl+shift+f 4.保存工程 快捷键:ctrl+shift+s(保存整个工程),ctrl+s(局部保存,只保存鼠标点击的

    2024年01月17日
    浏览(48)
  • 【sgCreateAPI】自定义小工具:敏捷开发→自动化生成API接口脚本(接口代码生成工具)

      具体步骤:登录 Apifox https://app.apifox.com/   圈选复制上面的内容粘贴到【接口地址列表】输入框,自动生成脚本代码 生成的接口请求代码是基于 【Vue.js最新版】【基于jQuery Ajax】[sd.js]最新原生完整版for凯哥API版本_你挚爱的强哥的博客-CSDN博客 【代码】【最新版】【基于j

    2024年02月09日
    浏览(58)
  • 安全学习DAY20_自动化工具项目武器库介绍

    自动信息搜集工具,适合大批量搜集,快速,自动化,在目标较多的情况下快速的进行打点的方式。比手工获取的信息相对较少。适合快速,从大批量的目标中筛选有用的信息,帮助我们快速的去找到一些脆弱性。(在Hvv/SRC挖掘过程中快速找到一些容易出漏洞的情况 针对单

    2024年02月09日
    浏览(65)
  • [自动化运维工具] Ansible的简单介绍与常用模块详解

    自动化运维工具,也叫 机器管理工具 。 可以实现 批量管理多台(成百上千)主机 ,是应用级别的 跨主机编排工具 。 无客户端agent存在,不需要在被控制的节点上安装额外的客户端应用 通过 ssh协议 与被控制节点通信 基于模块工作的,可以通过模块实现在被控制节点上执

    2024年02月05日
    浏览(82)
  • 比selenium体验更好的ui自动化测试工具: cypress介绍

    话说 Cypress is a next generation front end testing tool built for the modern web. And Cypress can test anything that runs in a browser.Cypress consists of a free, open source, locally installed Test Runner and a Dashboard Service for recording your tests. 吹的挺好哈,那咱也来尝试玩玩,试试,哈哈! 1、在Windows 7以上的环境中,可

    2024年01月16日
    浏览(47)
  • 使用自动化测试获取手机短信验证码

    目前在职测试开发,,写一些脚本,个人认为这职业不科学不应该有的职业,测试就是测试,开发就是开发,运维还是老鸟,这行业总能折腾些莫名其妙的东西出来,刚做这行时学的第一门语言是bash shell, 去新去单位上班直接写了个一键搭建测试环境的测试脚本,本来不想干测试了,好好做

    2024年01月21日
    浏览(50)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包