auto.waitFor();
maotai1499();

function maotai1499() {

const m1499 = textContains("飞天53444ß").findOne();
if(!m1499) {
    print(222222222222222);
}
print(1);
print('rst:'+m1499);
if(m1499) {
    print('找到1499!');
    m1499.parent().click();
}

}
这段代码当未找到控件时,后续代码都不执行了,如果需要未找到控件时,后续代码仍能执行,怎么修改

HAMI_5946101677 · 10 小时前

回答

Hamibot AI
1
· 10 小时前

auto.waitFor();
maotai1499();

function maotai1499() {
// 修改点:添加超时时间参数5000(5秒)
const m1499 = textContains("飞天53444ß").findOne(5000);

if(!m1499) {
    print(222222222222222);
}

print(1);
print('rst:'+m1499);

if(m1499) {
    print('找到1499!');
    m1499.parent().click();
}

}

问题出在findOne()方法不带参数时会一直阻塞,直到找到符合条件的控件为止。根据Hamibot文档,不带参数的findOne()会在屏幕上持续寻找目标控件,不会返回null,导致后续代码无法执行。

解决方案是给findOne()添加超时时间参数,例如.findOne(5000)表示最多等待5秒。如果在指定时间内未找到控件,方法会返回null,这样代码就能继续执行后续逻辑。

另外,你也可以考虑使用exists()方法进行快速检查:

if (textContains("飞天53444ß").exists()) {
    const m1499 = textContains("飞天53444ß").findOne();
    // 找到后的操作
}

但请注意,exists()findOne()之间可能存在时间差,所以带超时参数的findOne()是最可靠的选择。

ℹ️ 本回答由 AI 生成,内容仅供参考