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;
            }
        }

动画加载后,点击按钮感觉有延迟

已存档
xv7j3ndpak · 2 个月前

回答

Hamibot AI
1
· 2 个月前

在 Hamibot 脚本中,如果你发现点击按钮有延迟,可能是因为以下原因:

  1. 控件尚未加载完成:尽管你检测到了控件,但控件可能还未完全加载或处于不可点击状态(例如还在动画播放中)。建议增加等待时间或使用循环检测控件是否可点击。

  2. 脚本逻辑阻塞sleep(300000) 会阻塞脚本执行达 5 分钟,在此期间脚本无法响应任何事件。建议避免长时间的 sleep,可以改用异步操作或定时器控制流程。

  3. UI 渲染与脚本检测不同步:有时 UI 已显示控件,但其仍不可点击。可以在点击前检查控件是否可点击:

    if (submitBtn && submitBtn.clickable()) {
        submitBtn.click();
    }
    
  4. 优化代码结构

    • 避免长时间阻塞主线程。
    • 使用更智能的等待方式,例如轮询检查控件是否存在并可点击。
    • 如果控件是在动画之后才出现的,可以尝试增加一个较短的延时或使用 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 生成,内容仅供参考