Auto.js 点击控件 位置 封装方法


text_click("扫一扫",1,0);


/**
    ttext = 文本
     
    kong
     0 = 点击文本                               (举例:需要点击的内容为“123”,,若出现“1234,123”  则点击123)
     1 = 点击包括文本                         (举例:需要点击的内容为“123”,,若出现“1234,123”  则点击1234)
     2 = 点击出现的最后一个文本 的控件            (举例:需要点击的内容为“123”,,若出现“123,123,123”  则点击第三个123)
     3 = 点击按钮控件文本                       (举例:一般用于点击:按钮,弹窗按钮,授权提示按钮,等....)
    
    clickmod
     0 = 控件或位置                              (举例:控件点击不了  则点位置)
     1 = 位置                                 (举例:点文本,控件)
     2 = 控件                                 (举例:点文本,位置)
**/
function text_click(ttext,kong,clickmod){//文本,,
    var texi = null;
    var 是否可点 = false;
    var 是否找到 = true;
    console.log("[text_click]","ttext="+ ttext +"&kong="+ kong +"&clickmod="+ clickmod);
    var texi = 控件判断(ttext,kong,"TextView");
    if(texi == null && texi == undefined){
        console.log("[text_click]","没有找到:TextView");
        是否找到 = false;
        texi = 控件判断(ttext,kong,"Button");
        if(texi == null && texi == undefined){
            console.log("[text_click]","没有找到:Button");
            texi = 控件是否可点(texi);
            if(texi != false){
                点击位置或控件(texi,ttext,clickmod);
            }else{
                点击位置(texi,ttext);
            }
        }
    }
    if(是否找到 == true){//是否找到
        texi = 控件是否可点(texi);
        if(texi != false){
            点击位置或控件(texi,ttext,clickmod);
        }else{
            点击位置(texi,ttext);
        }
    }
    console.log("[text_click]","完毕:"+ 是否找到);
}
function 控件判断(ttext,kong,clas){
    var texi = null;
    var 是否可点 = false;
    var 是否找到 = false;
    console.log("[控件判断]","进入类库:ttext="+ ttext +"&kong="+ kong +"&clas="+ clas);
    if(kong == 0){
        texi = className(clas).text(ttext).findOne(1000);
        if(texi)是否找到 = true;
        if(是否找到 == false){
            console.log("[控件判断]","是否找到:"+ 是否找到);
            texi = className(clas).textContains(ttext).findOne(1000);
        }else{
            console.log("[控件判断]","是否找到:"+ 是否找到);
        }
    }else if(kong == 1){
        texi = className(clas).textContains(ttext).findOne(1000);
    }else if(kong == 2){
        var fsfan = className(clas).textContains(ttext).find();
        var lengt = fsfan.length-1;
        console.log("[控件判断]","lengt="+ lengt);
        texi = fsfan[lengt];
    }else if(kong == 3){
        texi = className("Button").textContains(ttext).findOne(1000);
    }
    if(是否找到 == false){
        if(texi){
            是否找到 = true;
        }
    }
    console.log("[控件判断]","完毕:"+ 是否找到);
    return texi;
}
function 点击位置(texi,ttext){
    console.log("[点击位置]","进入:ttext:"+ ttext);
    if(texi != null && texi != undefined && texi != false){
        var aws = texi.bounds();
        var 是否成功 = false;
        if(shell("screencap /sdcard/root.png",true).code == 0){
            是否成功 = Tap(aws.centerX(),aws.centerY());//有root权限
        }else{
            是否成功 = click(aws.centerX(),aws.centerY());//无root权限
        }
    }
    console.log("[点击位置]","完毕:"+ 是否成功);
}
function 点击位置或控件(texi,ttext,clickmod){
    var clickcode = false;
    console.log("[点击位置或控件]","进入clickmod="+ clickmod +"&ttext="+ ttext);
    if(clickmod == 0){
        clickcode = texi.click();
        if(clickcode == false){
            点击位置(texi,ttext);
        }
    }else if(clickmod == 1){
        点击位置(texi,ttext);
    }else if(clickmod == 2){
        clickcode = texi.click();
    }
    console.log("[点击位置或控件]","完毕clickcode="+ clickcode +"&ttext="+ ttext);
}
function 控件是否可点(texi){
    console.log("[控件是否可点]","进入类库");
    var czz = "";
    var 是否找到 = false;
    for(var i=0;i<=10;i++){
        sleep(122);
        if(texi != null && texi != undefined){
            if(texi.clickable() == true){
                sleep(166);
                是否找到 = texi;
                console.log("[控件是否可点]","控件可点true");
                break;
            }else{
                texi = texi.parent();
            }
        }else{
            console.log("[控件是否可点]","texi::::"+ texi);
        }
    }
    if(是否找到 == false){
        console.log("[控件是否可点]","完毕:"+ 是否找到);
    }else{
        console.log("[控件是否可点]","完毕:true");
    }
    return 是否找到;
}
赞 (0)