Autojs学习笔记6:text(txt).findOne()切换app时会报错,最后解决实现效果,切换任何app直到脚本找到指定的txt文字的控件进行点击。

申明本人使用的autojs是4.1.1版本

目录

使用text(txt).findOne()导致报错

核心代码

疑问

解决方法及代码

结论


使用text(txt).findOne()导致报错

workbench.desktop.main.js:71 [Extension Host] 10:18:49.662/E: Wrapped java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.CharSequence android.view.accessibility.AccessibilityNodeInfo.getPackageName()' on a null object reference ([remote]xfj.js#138)Wrapped java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.CharSequence android.view.accessibility.AccessibilityNodeInfo.getPackageName()' on a null object reference    at 领取 ([remote]xfj.js:138:0)    at [remote]xfj.js:54:0    at file:///android_asset/modules/__bridges__.js:10:0

核心代码

ui.callbackBtn.click(()=>{
   领取()
});

function 领取(){
   var b = false;
    if(点击目标控件和时间("领取",0)){
        b = true;
        toastLog("成功点击")
    }else{
        log("未找到点击按钮")
    }
    return b 
}

 /**
 * @param {控件内容} txt 
 * @param {时间} kjTime 
 * @returns true 找到并处理
 */
  function 点击目标控件和时间(txt,kjTime){
      var srk1;
      if(kjTime==0){
        srk1 = text(txt).findOne();
      }else{
        srk1 = text(txt).findOne(kjTime);
      }
      if(srk1!=null){
          srk1 = srk1.bounds();
          click(srk1.centerX(), srk1.centerY());
          return true;
      }else{
           return false;
       }
 }

疑问

正常情况 代码里的这行 srk1 = text(txt).findOne(); 没找到相关描述的控件就一直阻塞,但如果立马切换到其它app就会报错。(切换到系统界面是正常的)。

使用findOnce()函数也是一样的报错。

解决方法及代码

利用try catch思路来解决!

function 领取(){
   var b = false;
       try{
           if(点击目标控件和时间("领取",0)){
               b = true;
               toastLog("成功点击")
           }else{
               log("未找到点击按钮")
           }
       }catch(err){
           log("报错了!!!!")
           领取();//报错我就重新调用
       }
   return b
}

结论

使用text(txt).findOne()或是text(txt).findOnce() 只要切换app就会立马报错(测试时,我是人为切换app)。

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

PYB3

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值