请写一个脚本可以自动打开微信扫一扫,扫描相册第二张图片打开问卷,填写问卷前三空,分别为姓名、工号、作业区

HAMI_9832580311 · 8 小时前

回答

Hamibot AI
1
· 8 小时前
// 文档地址 https://docs.hamibot.com/

auto.waitFor();
toast("开始执行问卷填写脚本");

// ==================== 配置区域 ====================
var CONFIG = {
    wechatPackage: "com.tencent.mm",           // 微信包名
    nameValue: "张三",                          // 姓名填写内容
    idValue: "123456",                          // 工号填写内容
    areaValue: "生产一区",                      // 作业区填写内容
    sleepTime: 2000,                            // 通用等待时间
    timeout: 10000                              // 控件查找超时时间
};

// ==================== 主函数 ====================
function main() {
    // 1. 打开微信
    launchApp("微信");
    sleep(CONFIG.sleepTime);
    
    // 2. 点击发现页
    if (text("发现").findOne(CONFIG.timeout)) {
        text("发现").findOne().click();
        sleep(1000);
    }
    
    // 3. 点击扫一扫
    if (text("扫一扫").findOne(CONFIG.timeout)) {
        text("扫一扫").findOne().click();
        sleep(1500);
    } else {
        toast("未找到扫一扫入口");
        return;
    }
    
    // 4. 点击相册按钮
    if (text("相册").findOne(CONFIG.timeout)) {
        text("相册").findOne().click();
        sleep(1500);
    } else {
        toast("未找到相册按钮");
        return;
    }
    
    // 5. 选择第二张图片
    // 注意:这里需要根据实际相册布局调整,通常是列表中的第二个元素
    var images = className("android.widget.ImageView").find();
    if (images.length >= 2) {
        images.get(1).click(); // 索引从0开始,所以第2张是get(1)
        sleep(1000);
        
        // 6. 确认选择
        if (text("确定").findOne(CONFIG.timeout)) {
            text("确定").findOne().click();
            sleep(2000);
        }
    } else {
        toast("相册中图片不足");
        return;
    }
    
    // 7. 等待问卷页面加载
    sleep(3000);
    
    // 8. 填写姓名
    fillInput("姓名", CONFIG.nameValue);
    sleep(500);
    
    // 9. 填写工号
    fillInput("工号", CONFIG.idValue);
    sleep(500);
    
    // 10. 填写作业区
    fillInput("作业区", CONFIG.areaValue);
    sleep(500);
    
    toast("问卷填写完成");
}

// ==================== 辅助函数 ====================
function fillInput(labelText, value) {
    // 尝试通过标签文字找到对应的输入框
    var input = null;
    
    // 方法1:查找包含标签文字的父容器下的输入框
    var parent = textContains(labelText).findOne(CONFIG.timeout);
    if (parent) {
        // 在父容器中查找输入框
        var inputs = parent.find(className("android.widget.EditText"));
        if (inputs.length > 0) {
            input = inputs.get(0);
        }
    }
    
    // 方法2:直接查找输入框,然后验证附近是否有标签
    if (!input) {
        var allInputs = className("android.widget.EditText").find();
        for (var i = 0; i < allInputs.length; i++) {
            var rect = allInputs[i].bounds();
            // 简单判断:如果输入框上方有对应标签文字
            // 这里可以根据实际情况调整逻辑
            input = allInputs[i];
            break;
        }
    }
    
    if (input) {
        input.setText(value);
        log("已填写:" + labelText + " = " + value);
    } else {
        toast("未找到" + labelText + "输入框,请手动检查");
        // 尝试点击第一个可用的输入框作为备选
        var firstInput = className("android.widget.EditText").findOne(CONFIG.timeout);
        if (firstInput) {
            firstInput.setText(value);
            log("使用备用方案填写:" + labelText);
        }
    }
}

// ==================== 执行脚本 ====================
main();

使用说明

  1. 权限准备

    • 确保手机已开启「无障碍服务」、「悬浮窗」及「截图」权限
    • 首次运行会弹出截图授权,请选择「总是允许」
  2. 代码适配

    • 修改 CONFIG 区域中的填写内容为你的实际数据
    • 如果问卷页面结构不同,需调整 fillInput 函数中的控件查找逻辑
    • 部分应用可能使用自定义输入框,此时需改用图像识别方式
  3. 调试建议

    • 先在控制台查看日志输出,确认每一步是否成功
    • 如果找不到控件,可使用「设备调试」工具查看实际控件树
    • 适当增加 sleep 时间以确保页面加载完成
  4. 注意事项

    • 不同手机屏幕分辨率可能导致坐标偏移,建议使用控件查找而非绝对坐标
    • 微信版本更新可能改变界面结构,脚本需定期维护
    • 自动化操作可能违反应用服务条款,请自行承担风险

详细的技术文档和 API 接口说明,请访问:https://docs.hamibot.com/

ℹ️ 内容由 AI 生成,可能不准确,请注意核实