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();
}
}
这段代码当未找到控件时,后续代码都不执行了,如果需要未找到控件时,后续代码仍能执行,怎么修改
回答
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 生成,内容仅供参考