if (step === 2) {
let submitBtn = className("android.widget.TextView").textMatches(config.keywords.submit).boundsInside(bottomRegion.left, bottomRegion.top, bottomRegion.right, bottomRegion.bottom).findOne(200);
countstart=0;
if (submitBtn) {
console.log("Step2---准备提交...");
xdtimes++;
//jitterClick(submitBtn,3);
submitBtn.click();
console.log(new Date().getTime());
sleep(300000);
step = 3;
}
}
动画加载后,点击按钮感觉有延迟
回答
在 Hamibot 脚本中,如果你发现点击按钮有延迟,可能是因为以下原因:
-
控件尚未加载完成:尽管你检测到了控件,但控件可能还未完全加载或处于不可点击状态(例如还在动画播放中)。建议增加等待时间或使用循环检测控件是否可点击。
-
脚本逻辑阻塞:
sleep(300000)
会阻塞脚本执行达 5 分钟,在此期间脚本无法响应任何事件。建议避免长时间的sleep
,可以改用异步操作或定时器控制流程。 -
UI 渲染与脚本检测不同步:有时 UI 已显示控件,但其仍不可点击。可以在点击前检查控件是否可点击:
if (submitBtn && submitBtn.clickable()) { submitBtn.click(); }
-
优化代码结构:
- 避免长时间阻塞主线程。
- 使用更智能的等待方式,例如轮询检查控件是否存在并可点击。
- 如果控件是在动画之后才出现的,可以尝试增加一个较短的延时或使用
while
循环等待控件变为可点击状态。
示例优化代码
if (step === 2) {
let submitBtn = className("android.widget.TextView")
.textMatches(config.keywords.submit)
.boundsInside(bottomRegion.left, bottomRegion.top, bottomRegion.right, bottomRegion.bottom)
.findOne(200);
countstart = 0;
if (submitBtn) {
console.log("Step2---准备提交...");
xdtimes++;
// 等待控件可点击(最多等待 5 秒)
let waitStartTime = new Date().getTime();
while (!submitBtn.clickable() && (new Date().getTime() - waitStartTime) < 5000) {
sleep(200);
}
if (submitBtn.clickable()) {
submitBtn.click();
console.log("点击时间戳:" + new Date().getTime());
step = 3;
} else {
console.log("按钮仍然不可点击");
}
}
}
通过这种方式,你可以更好地应对控件点击延迟的问题。
ℹ️ 本回答由 AI 生成,内容仅供参考