autojs通用方法模型

"auto";
device.keepScreenOn();//保持屏幕常亮







text_click("发现",1,0);
text_click("搜一搜",1,0);

while(true){
    var 找到的参数 = undefined;
    var pword = "";
    var 是否成功到达搜索页面 = false;
    
    while(true){
        var desc1 = classNameContains("android.view.View").descContains("搜索");
        if(desc1.exists()){
            找到的参数 = desc1.findOne(1000);
            break;
        }
    }
    if(找到的参数 != "" && 找到的参数 != null && 找到的参数 != undefined && 找到的参数 != "undeflned"){
        sleep(1000);
        for(var i45 = 0; i45 < 200; i45++){
            找到的参数.click();
            pword = 显示屏幕内容();
            if(寻找文本(pword,"朋友圈_-_音乐_-_文章_-_微信指数",0) != -1){//存在
                是否成功到达搜索页面 = true;
                break;
            }
            if(i45>20){
                console.log("连续"+ i45 +"次没有找到搜索页面:",pword);//当**次都没有找到,就打印
            }
            sleep(200);
        }
    }
    if(是否成功到达搜索页面 == false){
        console.log("没有到达搜索页面:",找到的参数,pword);
    }else{
        console.log("成功到达搜索页面");
        sleep(1000);
        while(true){
            if(className("EditText").exists()){
                break;
            }
        }
        var edit = className("EditText").find();
        for(var i23 = 0; i23 < edit.length; i23++){
            if(edit[i23] != "" && edit[i23] != null && edit[i23] != undefined && edit[i23] != "undeflned"){
                edit[i23].setText("测试".trim());//向全部搜索框输入文本
                console.log("输入内容:","测试".trim());
            }
        }
        
        
        
        while(true){
            sleep(1000);
            var ss = text("搜索").find();
            for(var i = 0; i < ss.length; i++){
                if(ss[i] != "" && ss[i] != null && ss[i] != undefined && ss[i] != "undeflned"){
                    ss[i].click();
                    console.log("点击了搜索按钮");
                }
            }
            sleep(3000);
            var dao = 获取导航栏控件("小程序");
            if(dao != undefined){
                console.log("已进入搜索列表页面");
                break;
            }
        }
        
        
        while(true){//点导航栏:小程序
            sleep(3000);
            var dao = 获取导航栏控件("小程序,按钮");
            if(dao != undefined){
                sleep(1000);
                dao.click();
                console.log("点击了导航栏【小程序】");
                sleep(500);
                var dao_ok = 获取导航栏控件("已选定,小程序");
                if(dao_ok != undefined){
                    console.log("已进入搜索小程序页面");
                    break;
                }
            }
        }
        
        //划动到控件出现在可视区域并单击("考试宝","上海巨闲网络科技");
        
        var 是否返回成功 = false;
        while(true){
            sleep(1000);
            var ss = text("取消").find();
            for(var i = 0; i < ss.length; i++){
                if(ss[i] != "" && ss[i] != null && ss[i] != undefined && ss[i] != "undeflned"){
                    ss[i].click();
                    console.log("点击了取消按钮");
                }
            }
            sleep(3000);
            while(true){
                var desc1 = classNameContains("android.view.View").descContains("搜索");
                if(desc1.exists()){
                    是否返回成功 = true;
                    break;
                }
            }
            if(是否返回成功 == true){
                console.log("已返回成功");
                break;
            }
        }
        
    }
}



























//下面都是方法,没啥用,忽略
function 划动到控件出现在可视区域并单击(小程序名,公司名){
    var 是否出现在肉眼可视区域 = false;
    var a = 366;//这是一组起始范围
    var a1 = 600;//这是一组起始范围
    var b = 1950;//这是一组结束范围
    var b1 = 2222;//这是一组结束范围
    
    
    while(true){
        var fsfan = className("Button").find();
        for(i = 0; i < fsfan.length; i++){
            var ftxt = fsfan[i].text();
            if(ftxt != ""){
                var axy = fsfan[i].bounds();
                if (axy.top >= a && axy.bottom >= a1) {
                    if (axy.top <= b && axy.bottom <= b1) {//已滑动到,屏幕肉眼可见的范围
                        if(寻找文本(fsfan[i].text(),小程序名,0) != -1){//小程序名 用于判断点击
                            if(寻找文本(fsfan[i].text(),公司名,0) != -1){//公司名 用于确定产品
                                console.log("已进入,选项肉眼可视区域");
                                是否出现在肉眼可视区域 = true;
                            }
                        }
                    }
                }
            }
        }
        if(是否出现在肉眼可视区域 == false){
            下滑一切控件("");
        }else{
            break;
        }
    }
    while(true){
        var lbx = className("Button").find();
        for(i = 0; i < lbx.length; i++){
            var ftxt = lbx[i].text();
            if(ftxt != ""){
                if(寻找文本(ftxt,小程序名,0) != -1){
                    if(寻找文本(ftxt,公司名,0) != -1){
                        lbx[i].click();
                    }
                }
            }
        }
        var edit = className("EditText").textContains("测试".trim()).find();
        if(edit.length ==0){
            console.log("已进入,指定小程序");
            break;
        }
    }
}
function 获取导航栏控件(word){
    var fan = undefined;
    if(className("android.view.View").exists()){
        var dhs = className("android.view.View").find();
        for(var i457 = 0; i457 < dhs.length; i457++){
            if(dhs[i457] != "" && dhs[i457] != null && dhs[i457] != undefined && dhs[i457] != "undeflned"){
                var dhl = dhs[i457];
                if(寻找文本(dhl.text(),word,0) != -1){//存在
                    fan = dhl;
                }
            }
        }
    }
    return fan;
}
function 下滑一切控件(view) {
    if(view == ""){
        view = className("android.widget.FrameLayout").findOne();
    }
    if (view){
        if(view.scrollable() == true){
            view.scrollForward();//找到页面所有可以滑动的,并滑动
            sleep(1000);
        }
        if (view.childCount() > 0) {// 如果控件是容器类型,则继续遍历其子控件
            for (var i = 0; i < view.childCount(); i++) {
                var childView = view.child(i);
                下滑一切控件(childView);
            }
        }
    }
}
function 显示屏幕内容(){
    var ftxt = "";
    var fas = "";
    var fsfan = className("TextView").find();
    for(var i = 0; i < fsfan.length; i++){
        ftxt = fsfan[i].text();
        if(ftxt != ""){
            if(fas == ""){
                fas = ftxt;
            }else{
                fas = fas +"_-_"+ ftxt;
            }
        }
    }
    fsfan = className("TextView").find();
    for(var i = 0; i < fsfan.length; i++){
        ftxt = fsfan[i].desc();
        if(ftxt != ""){
            if(fas == ""){
                fas = ftxt;
            }else{
                fas = fas +"_-_"+ ftxt;
            }
        }
    }
    fsfan = className("Button").find();
    for(i = 0; i < fsfan.length; i++){
        ftxt = fsfan[i].text();
        if(ftxt != ""){
            if(fas == ""){
                fas = ftxt;
            }else{
                fas = fas +"_-_"+ ftxt;
            }
        }
    }
    fsfan = className("Button").find();
    for(i = 0; i < fsfan.length; i++){
        ftxt = fsfan[i].desc();
        if(ftxt != ""){
            if(fas == ""){
                fas = ftxt;
            }else{
                fas = fas +"_-_"+ ftxt;
            }
        }
    }
    fsfan = className("android.view.View").find();
    for(i = 0; i < fsfan.length; i++){
        ftxt = fsfan[i].text();
        if(ftxt != ""){
            if(fas == ""){
                fas = ftxt;
            }else{
                fas = fas +"_-_"+ ftxt;
            }
        }
    }
    fsfan = className("android.view.View").find();
    for(i = 0; i < fsfan.length; i++){
        ftxt = fsfan[i].desc();
        if(ftxt != ""){
            if(fas == ""){
                fas = ftxt;
            }else{
                fas = fas +"_-_"+ ftxt;
            }
        }
    }
    return fas;
}
function 寻找文本(被搜寻的文本,欲寻找的文本,起始位置){
    if((起始位置 < 0) || (起始位置 > 被搜寻的文本.length) || ("".equals(被搜寻的文本)) || ("".equals(欲寻找的文本))){
        return -1;
    }
    return 被搜寻的文本.indexOf(欲寻找的文本, 起始位置);
}
function 子文本替换(待操作文本,欲被替换的子文本,用作替换的子文本){
    return 待操作文本.replace(欲被替换的子文本, 用作替换的子文本);
}
function 取群名文本(待取文本,左边文本,右边文本){
    var wba = 待取文本.indexOf(左边文本);
    var wbb = 待取文本.indexOf(右边文本);
    return 待取文本.substring(wba + 1,wbb);
}
function 取转义文本(待取文本,左边文本,右边文本){
    return 待取文本.substring(待取文本.indexOf(左边文本)+4, 待取文本.lastIndexOf(右边文本));
}
function 取指定文本(待取文本,左边文本,右边文本){
    var pattern = new RegExp(左边文本 + "(.*?)" + 右边文本,"g");
    var result = new Array(0);
    while (pattern.exec(待取文本) != null){
        result.push(RegExp.$1);
    }
    return result;
}
function 引用文件(){
    var tanc = '"ui";\n替换引用替换();\nfunction okokok(){\n    let builder = new android.app.AlertDialog.Builder(activity);\n    builder.setTitle("替换标题替换");\n    builder.setMessage("替换内容替换");\n    builder.setCancelable(false);\n    builder.setPositiveButton("替换确实替换", {\n        onClick: function (builder) {\n            \n        }\n    }).show();\n}\n\nfunction okno(){\n    let builder = new android.app.AlertDialog.Builder(activity);\n    let field = null;\n    builder.setTitle("替换ok标题no替换");\n    builder.setMessage("替换ok内容no替换");\n    builder.setCancelable(false);\n    builder.setPositiveButton("替换ok确实no替换", {\n        onClick: function (builder) {\n            \n        }\n    }).setNegativeButton("替换ok取消no替换", {\n        onClick: function (builder) {\n            \n        }\n    }).show();\n}';
    tanc = tanc.replace("替换引用替换","okokok");
    tanc = tanc.replace("替换标题替换","提示");
    tanc = tanc.replace("替换内容替换","当前 微信版本 不是:7.0.16");
    tanc = tanc.replace("替换确实替换","好的");
    files.write("/sdcard/qxcode/tan_code.js",tanc);//写入文件
    engines.execScriptFile("/sdcard/qxcode/tan_code.js");
}
function getPackageVersion(packageName) {
  importPackage(android.content);
  var pckMan = context.getPackageManager();
  var packageInfo = pckMan.getPackageInfo(packageName, 0);
  return packageInfo.versionName;
}
function 取指定文本2(待取文本,左边文本,右边文本){
    var pattern = new RegExp(左边文本 + "(.*?)" + 右边文本,"g");
    var result = new Array(0);
    while (pattern.exec(待取文本) != null){
        result.push(RegExp.$1);
    }
    return result[0];
}

function 连续弹窗(txtt){
    for(var y=10;y>=0;y--){
        toastLog(txtt);
        sleep(1988);//1000=1秒
    }
}
function 获取时间(){
    var today=new Date();
    return today.getHours();
}
/**
    url123 = 网址
    lgg = 1 则打印网址日志
    mods
      0=返回源码
      1=返回json
      2=返回字节
      3=返回body
    
**/
function fa_get(url123,lgg,mods){
    if(lgg == 1){
        console.log("[fa_get]",url123);
    }
    var fan = undefined;
    var codeee = undefined;
    try{
        codeee = http.get(url123);
    }catch(e){
        codeee = undefined;
        console.log("[fa_get]","get异常1:"+e);
    }
    if(codeee == undefined){
        try{
            codeee = http.get(url123);
        }catch(e){
            codeee = undefined;
            console.log("[fa_get]","get异常2:"+e);
        }
        if(codeee == undefined){
            try{
                sleep(5000);
                codeee = http.get(url123);
            }catch(e){
                codeee = undefined;
                console.log("[fa_get]","get异常3:"+e);
            }
        }
    }
    if(codeee != undefined && codeee.statusCode == 200){
        if(mods == 0){
            try{
                fan = codeee.body.string();
            }catch(e){
                fan = undefined;
                console.log("[fa_get]","codeee.body.string():"+e)
            }
        }else if(mods == 1){
            try{
                fan = codeee.body.json();
            }catch(e){
                fan = undefined;
                console.log("[fa_get]","codeee.body.json():"+e)
            }
        }else if(mods == 2){
            try{
                fan = codeee.body.bytes();
            }catch(e){
                fan = undefined;
                console.log("[fa_get]","codeee.body.bytes():"+e)
            }
        }else if(mods == 3){
            try{
                fan = codeee.body;
            }catch(e){
                fan = undefined;
                console.log("[fa_get]","codeee.body:"+e)
            }
        }
    }
    return fan;
}



/**
    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;
    var texi = 控件判断(ttext,kong,"TextView");
    if(texi == null && texi == undefined){
        是否找到 = false;
        texi = 控件判断(ttext,kong,"Button");
        if(texi != null && texi != undefined){
            texi = 控件是否可点(texi);
            if(texi != false){
                点击位置或控件(texi,ttext,clickmod);
            }else{
                点击位置(texi,ttext);
            }
        }
    }
    if(是否找到 == true){//是否找到
        texi = 控件是否可点(texi);
        if(texi != false){
            点击位置或控件(texi,ttext,clickmod);
        }else{
            点击位置(texi,ttext);
        }
    }
}
function 控件判断(ttext,kong,clas){
    var texi = null;
    var 是否可点 = false;
    var 是否找到 = false;
    if(kong == 0){
        texi = className(clas).text(ttext).findOne(1000);
        if(texi)是否找到 = true;
        if(是否找到 == false){
            texi = className(clas).textContains(ttext).findOne(1000);
        }
    }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;
        texi = fsfan[lengt];
    }else if(kong == 3){
        texi = className("Button").textContains(ttext).findOne(1000);
    }
    if(是否找到 == false){
        if(texi){
            是否找到 = true;
        }
    }
    return texi;
}
function 点击位置(texi,ttext){
    var aws = texi.bounds();
    var 是否成功 = click(aws.centerX(),aws.centerY());
}
function 点击位置或控件(texi,ttext,clickmod){
    var clickcode = false;
    if(clickmod == 0){
        clickcode = texi.click();
        if(clickcode == false){
            点击位置(texi,ttext);
        }
    }else if(clickmod == 1){
        点击位置(texi,ttext);
    }else if(clickmod == 2){
        clickcode = texi.click();
    }
}
function 控件是否可点(texi){
    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;
                break;
            }else{
                texi = texi.parent();
            }
        }
    }
    return 是否找到;
}
function bytesToBase64(imgBytes) {//解码二进制数据
  let code = android.util.Base64.encodeToString(imgBytes, 2);
  code = $base64.decode(code);
  code = encodeURIComponent(code);
  return code;
}
function shell_copy(name){
    //将手机系统文件,复制到储存卡
    var a ="cp /data/data/com.twitter.android/databases/"+name+" /sdcard/";
    var result = shell(a, true);
    log(result);
}
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,445评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,889评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,047评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,760评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,745评论 5 367
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,638评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,011评论 3 398
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,669评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,923评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,655评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,740评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,406评论 4 320
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,995评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,961评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,197评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,023评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,483评论 2 342

推荐阅读更多精彩内容