我想实现微信小程序自动填表提交

HAMI_0633688151 · 19 小时前

回答

Hamibot AI
1
· 19 小时前

实现微信小程序的自动填表提交,Hamibot 可以通过无障碍服务(Accessibility Service)模拟点击和输入操作。但由于微信小程序运行在微信容器内,其界面元素有时无法被标准无障碍接口完全识别,因此需要针对具体小程序的 UI 结构编写脚本。

以下是实现该功能的完整方案、代码示例及注意事项。

1. 前置准备

  • 权限开启:确保手机已授予 Hamibot 无障碍服务权限,且微信未被后台清理。
  • 环境配置:在 Hamibot 控制台创建任务,选择对应的设备。
  • UI 分析:使用 Hamibot 的“控件捕获”功能查看目标小程序表单元素的文本、ID 或类名,以便在脚本中定位。

2. 脚本逻辑设计

脚本主要包含以下步骤:

  1. 启动微信应用。
  2. 进入指定的小程序(通过搜索或最近使用)。
  3. 等待页面加载完成。
  4. 遍历表单输入框并填入数据。
  5. 点击提交按钮。
  6. 处理可能的弹窗或验证。

3. 代码示例

以下代码遵循 Rhino 1.7.15 引擎规范,避免使用箭头函数和默认参数,确保兼容性。

// 文档地址 https://docs.hamibot.com/
// 微信小程序自动填表提交示例脚本

function main() {
    var packageName = "com.tencent.mm";
    var miniProgramName = "目标小程序名称";
    
    // 1. 启动微信
    launchApp("微信");
    sleep(2000);
    
    // 2. 查找并进入小程序
    // 注意:不同版本微信入口可能不同,这里假设通过搜索或特定路径进入
    // 实际使用时需根据控件捕获结果调整选择器
    var searchBtn = text("发现").findOne(5000);
    if (searchBtn) {
        click(searchBtn.bounds().centerX(), searchBtn.bounds().centerY());
        sleep(1000);
        text("小程序").findOne().click();
        sleep(1000);
        // 搜索小程序
        text("搜索").findOne().click();
        setText(miniProgramName);
        pressKey(66); // 回车键
        sleep(2000);
        // 点击进入小程序
        text(miniProgramName).findOne().click();
    }
    
    // 3. 等待页面加载
    toastLog("等待页面加载...");
    sleep(3000);
    
    // 4. 填写表单
    // 假设表单有明确的提示文字,如"姓名"、"电话"
    fillInput("姓名", "张三");
    fillInput("手机号", "13800138000");
    
    // 5. 点击提交
    var submitBtn = text("提交").findOne(5000);
    if (submitBtn) {
        submitBtn.click();
        toastLog("提交成功");
    } else {
        toastLog("未找到提交按钮");
    }
}

// 辅助函数:填充输入框
function fillInput(labelText, value) {
    var inputNode = text(labelText).findOne(3000);
    if (inputNode) {
        // 尝试点击输入框
        inputNode.parent().click(); 
        sleep(500);
        // 设置文本
        setText(value);
        sleep(500);
    } else {
        toastLog("未找到字段:" + labelText);
    }
}

main();

4. 最佳实践建议

  • 选择器优化:优先使用 text() 匹配可见文本,比 ID 更稳定。如果文本动态变化,可使用 textMatches() 配合正则表达式。
  • 等待机制:小程序加载速度不一,务必在关键操作前使用 sleep()waitFor() 确保元素就绪,避免因超时导致脚本报错。
  • 异常处理:增加对弹窗(如授权请求、验证码)的判断逻辑。如果遇到验证码,脚本应暂停并通知人工介入。
  • 坐标备用:当控件无法获取时,可记录屏幕坐标作为备选方案,但需注意屏幕分辨率适配问题。

5. 风险与限制

  • 合规性:自动化操作可能违反微信用户服务协议,存在账号被封禁的风险,请谨慎使用。
  • 技术限制:部分小程序采用 Canvas 绘制或自定义渲染,无障碍服务无法识别内部元素,此类情况无法通过 Hamibot 直接自动化。
  • 维护成本:小程序更新频繁,UI 结构变化会导致脚本失效,需定期维护。

如果在执行过程中遇到具体的控件无法识别问题,建议使用 Hamibot 在线编辑器的“控件捕获”功能重新确认节点信息。

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