回答
要实现“到付款界面自动退出小程序”的功能,可以结合检测特定界面文本和关闭应用的操作。以下是基于 Hamibot 的实现方案:
实现原理
- 界面检测:通过
textMatches
监控是否出现「付款」「支付」等关键词 - 应用关闭:找到微信小程序容器并强制关闭
- 权限要求:需要开启无障碍服务和后台弹窗权限
示例代码
// 文档地址 https://docs.hamibot.com/
var appName = "微信"; // 小程序容器应用名称
var paymentKeywords = ["付款", "支付", "订单支付", "确认付款"]; // 支付界面特征词
// 关键词监控循环
auto.waitFor();
while(true) {
// 遍历所有关键词检测
for(var i=0; i<paymentKeywords.length; i++) {
if(textMatches(RegExp(paymentKeywords[i])).exists()) {
log("检测到支付界面 - " + paymentKeywords[i]);
closeApp(appName);
break;
}
}
sleep(2000); // 每2秒检测一次
}
// 应用关闭函数(基于文档5的优化版本)
function closeApp(appName) {
var name = getPackageName(appName);
if (!name && getAppName(appName)) name = appName;
if (!name) return log(appName + " 未安装");
app.openAppSetting(name);
text(app.getAppName(name)).waitFor();
sleep(500);
// 支持更多关闭控件匹配模式
let stopBtn = textMatches(/(.*强制.*|.*停止.*|.*结束.*|结束运行)/).findOne(500);
if(stopBtn && stopBtn.enabled()) {
stopBtn.parent().click();
textMatches(/(.*确认.*|.*确定.*)/).findOne(500)?.click();
log(app.getAppName(name) + " 已关闭");
} else {
log("无法找到关闭按钮");
}
back();
}
参数调整建议
- 关键词优化:根据实际支付界面修改
paymentKeywords
数组内容 - 控件匹配:若设备界面无「结束运行」字样,可通过
descMatches
同时检测描述文本 - 性能优化:可通过
waitForActivity
配合包名检测提升准确性 - 安全机制:建议添加执行次数限制防止死循环
注意事项
- 需在 Hamibot 播放设置中启用「无障碍服务」和「悬浮窗权限」
- 不同安卓系统设置界面存在差异,可能需要调整关闭控件的匹配规则
- 对于 WebView 内的支付界面,可能需要通过
packageName
更精确匹配 - 若目标小程序未运行在微信内,需修改
appName
为对应容器应用
遇到界面元素无法定位时,建议使用「Hamibot 视图」工具进行实时元素分析。
ℹ️ 本回答由 AI 生成,内容仅供参考