Hamibot企业微信自动打卡签到——仅作记录

Hamibot是基于Auto.js开发且开发者与用户均可免费使用。在写下这些文字时,看到有Auto.js Pro产品(目前并未了解Pro的功能)。

如果你正想使用Hamibot开发一款出自己的脚本,建议你到官网的开发文档去看,而不是在网上查找你想做的每一步。

这篇文档仅作我开发学校内企业微信自动打卡的脚本记录,当然也会简单介绍一下代码的用途。

声明: 笔者并未学习过Java Script,而是在编写脚本过程中根据Java Script语法进行编辑(参考文档:菜鸟教程


首先是用户配置:

用户配置
在脚本内,Hamibot获取配置信息的方式:

const { msg1 } = hamibot.env;

msg1你可以直接对照上图查看,便能了解其中编写方式。

设置屏幕固定大小,若是不同机型脚本则会自动调整。

setScreenMetrics(2340, 1080);

开启悬浮窗

setInterval(() => {}, 1000);
var w = floaty.window(
    <frame gravity='center' bg='#708090'>
        <text id='text'>悬浮窗</text>
    </frame>
);

悬浮窗窗口设置


w.setAdjustEnabled(false);
w.setPosition(350, 20);
w.setSize(500, 230); // -2, -2根据内容大小变化

// 悬浮窗内容
function floatWindow(textContent){
    ui.run(function() {
        w.text.setText(String(textContent));
    });
    log(textContent);
}

sleep(5000);

启动企业微信,并判断

var start = launch('com.tencent.wework');
    if (start){
        floatWindow("企业微信启动中……");
    }else{
        floatWindow("未找到企业微信!");
        clock();
    }

打卡,因为这里无法使用控件,故此只好用点击(click)。

// 进入打卡函数
    function findAndClick(textcontent, position){
        var findWorkPlatFrom = text(textcontent).findOne();
        if (findWorkPlatFrom){
            floatWindow("已找到" + textcontent);
            sleep(1500);
            click(position[0], position[1], position[2], position[3]);
        }
    }

进入打卡之后的选项函数

function varOption (textcontent, optionNumber){
        var option = text(textcontent).findOne();
        if (option){
            floatWindow("已点击选项" + String(optionNumber + 1));
            option.click();
        }
    }

倒计时关闭脚本

function clock(){
        for (var i = 10; i >= 1; i--){
            floatWindow(String(i));
            sleep(1000);
        }
        device.vibrate(2000);
        w.exitOnClose();
    }

参数配置

const position = [[648,2165,864,2272], [73,537,229,589], [214,278,687,352]];
const workPlatFrom = ["工作台", "健康上报", "学生每日健康情况登记"];
const option =[msg1, msg2, msg3, msg4, msg5, msg6, "同意并提交"];

全部源码

auto.waitFor(); // 文档地址:https://docs.hamibot.com/reference/widgetsBasedAutomation
// auto.setMode("fast");
// auto.root();
setScreenMetrics(2340, 1080);
// 悬浮窗
setInterval(() => {}, 1000);
var w = floaty.window(
    <frame gravity='center' bg='#708090'>
        <text id='text'>悬浮窗</text>
    </frame>
);

// 悬浮窗窗口设置
w.setAdjustEnabled(false);
w.setPosition(350, 20);
w.setSize(500, 230); // -2, -2根据内容大小变化

// 悬浮窗内容
function floatWindow(textContent){
    ui.run(function() {
        w.text.setText(String(textContent));
    });
    log(textContent);
}

sleep(5000);

try{
    // 启动 企业微信
    var start = launch('com.tencent.wework');
    if (start){
        floatWindow("企业微信启动中……");
    }else{
        floatWindow("未找到企业微信!");
        clock();
    }
    // 进入打卡函数
    function findAndClick(textcontent, position){
        var findWorkPlatFrom = text(textcontent).findOne();
        if (findWorkPlatFrom){
            floatWindow("已找到" + textcontent);
            sleep(1500);
            click(position[0], position[1], position[2], position[3]);
        }
    }

    // 选项函数
    function varOption (textcontent, optionNumber){
        var option = text(textcontent).findOne();
        if (option){
            floatWindow("已点击选项" + String(optionNumber + 1));
            option.click();
        }
    }

    function clock(){
        for (var i = 10; i >= 1; i--){
            floatWindow(String(i));
            sleep(1000);
        }
        device.vibrate(2000);
        w.exitOnClose();
    }
}catch(e){
    txt = "错误内容:" + e.message + "\n";
    alert(txt);
    floatWindow(txt);
    floatWindow("十秒后结束程序");
    clock();
}

const { msg1 } = hamibot.env;
const { msg2 } = hamibot.env;
const { msg3 } = hamibot.env;
const { msg4 } = hamibot.env;
const { msg5 } = hamibot.env;
const { msg6 } = hamibot.env;
const position = [[648,2165,864,2272], [73,537,229,589], [214,278,687,352]];
const workPlatFrom = ["工作台", "健康上报", "学生每日健康情况登记"];
const option =[msg1, msg2, msg3, msg4, msg5, msg6, "同意并提交"];
// var option =["一切正常,可正常返校", "否", "不确定,曾有新冠感染症状", "正常", "无需检测", "已接种3针", "同意并提交"]; 

// 进入点击
for (var i = 0; i<position.length; i++){
    findAndClick(workPlatFrom[i], position[i]);
}
// 点击选项
for (var i = 0; i<=option.length; i++){
    varOption(option[i], i);
    swipe(891, 2159, 758, 30, 850);
    sleep(1000);
}
// 倒计时十秒结束程序
clock();

  • 1
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值