Auto.js安卓手机学习通自动刷课脚本

起因

最近在上网课,一直被要求看视频,很烦,就打算用脚本刷。在网上找了个代码,发现自己手机用不了,就可能是时间太久了学习通也更新了,自己改了改,完美运行。
代码如下:

auto.waitFor();
//设置屏幕分辨率环境,以适应不同分辨率设备
setScreenMetrics(1440, 2392);
//正文代码
var rootAutomator;
var isFirstRun = true;
var isPlaying = false;
var isDebug = true; //开发者模式
var btnSubmit = text("提交");
var btnContinue = id("check_right");
//问题选项列表
var answerListView = className("android.widget.ListView");

if (isDebug) {
    console.clear(); //清除控制台
    console.show();
}
if (hasRoot()) {
    rootAutomator = new RootAutomator();
}
//检查当前界面是否是脚本初始运行界面
if (!className("android.widget.TextView").depth(16).text("章节").exists()) {
    alert("提示", "学习通->我的课程->选择某个课程进入,脚本便会自动运行了");
}
//脚本退出监听
events.on('exit', function () {
    if (rootAutomator != null) rootAutomator.exit();
    console.hide(); //隐藏控制台
});
while (true) {
    var isFinded = false;
    //处理章节列表界面
    if (className("android.widget.TextView").depth(16).text("章节").exists()) {
        isFinded = true;
        if (isFirstRun) {
            isFirstRun = false;
            toastLog("脚本已经开始运行,期间请勿进行任何不必要操作...");
        }
        className("android.widget.TextView").text("章节").findOne().click()
        sleep(500)
        log("已进入章节列表");
        //根据id和text进行组合判断
        if (id("tv_icon").text("1").exists()) {
            var tvIcon = id("tv_icon").text("1").findOne();
            //进行三次父类控件查找列表中的选项布局
            clickOpt(tvIcon.parent().parent().parent().parent());
        }  else if (textContains("已经到底啦").exists()) {
            toastLog("视频已全部看完,脚本运行完毕!");
            break;
        } else {
            scroll();
        }
    }
    //处理章节详情界面
    if (id("tv_chapter_title").exists()) {
        isFinded = true;
        var chapterName = id("tv_chapter_name").findOne();
        log("已进入[" + chapterName.text() + "]章节详情页");
        var btnPlay = text("play").findOne(5000);
        if (btnPlay == null) {
            log("5秒内没发现播放按钮,滑动一下刷新界面");
            scroll();
            sleep(2000);
            // scrollDown();
        } else {
            log("发现播放按钮");
            sleep(1000);
            if (text("任务点已完成").exists()) {
                log("当前章节以前已看完");
                backOpt(); //点击返回键
            } else if (isPlaying) {
                log("当前章节刚已看完,准备进入下一章节");
                isPlaying = false;
                backOpt(); //点击返回键
            } else {
                log("已点击播放按钮");
                clickOpt(btnPlay);
            }
        }
    }
    sleep(500)
}
//工具方法
//打印log
function log(msg) {
    if (isDebug) console.log(msg);
}
//上滑
function scroll() {
    if (device.sdkInt >= 24) {
        log("执行Android7.0以上的滑动方法");
        //Android7.0以上的滑动
        swipe(700, 1200, 700, 600, 500);
    } else if (hasRoot()) {
        log("有Root权限,执行Root权限下的滑动方法");
        rootAutomator.swipe(700, 1200, 700, 600, 500);
    } else {
        log("执行Android7.0以下的滑动方法,有点问题,有时会滑不到最底端,需手动滑一下");
        //AutoJs的滑动,有点问题,有时会滑不到最底端!
        scrollable(true).findOnce(1).scrollForward();
        //className("android.support.v7.widget.RecyclerView").scrollForward();
    }
}
//处理返回点击有时不生效问题
function backOpt() {
    for (var i = 0; i < 10; i++) {
        sleep(100);
        if (back()) break;
    }
}
//处理click点击有时候不生效问题
function clickOpt(widgetObj) {
    for (var i = 0; i < 10; i++) {
        sleep(100);
        if (widgetObj.click()) break;
    }
}
//检测有无root权限
function hasRoot() {
    return files.exists("/system/bin/su") || files.exists("/system/xbin/su");
}

怎么运行我就不详细说了,看我之前的博客

https://blog.csdn.net/qq_37591986/article/details/104886756

重申一下,代码不是我写的,我只是改改,源代码链接:

https://www.autojs.org/topic/1704/%E5%AD%A6%E4%B9%A0%E9%80%9A%E6%8C%82%E6%9C%BA%E7%9C%8B%E8%A7%86%E9%A2%91

你可能感兴趣的:(Auto.js安卓手机学习通自动刷课脚本)