湖南科技大学の自動ヘルスチェックイン--- auto.js


序文

この記事はPythonで書かれていませんが、auto.js、python、次に1つのXueyibujing、そして2つ目は、パンチのWebサイトが見つかりませんでした。詳細を確認したい場合は、このリンクを参照してください

1.auto.jsとダウンロードアドレスの長所と短所

Auto.jsは、Androidシステムの「補助機能」を使用して、ボタンウィザードと同様の補助作業を実現します。ボタンウィザードは、コードを介して一連のインターフェイスアクションをシミュレートできます。

欠点はまだ最初に説明する必要があります。つまり、毎回アプリを開く必要があり、最初にユーザー補助機能を開く必要があります。

ダウンロードリンク(注:入力後、2番目のダウンロードを選択してください):ダウンロードアドレス

二、コード

約150行

これ以上ナンセンスとは言いませんが、コードを見てください。


auto.waitFor();
var phone = "110";
var province = "xxx";
var shi = "xxx";
/*详细地址*/
var detailAddress = "xxx";
/*如果不需要在qq群中签到,就要删掉下面两个方法*/
var qqqun = "xxx";
launchApp("微信");/*启动微信*/
sleep(1000);
/*找到搜索框 微信8.0搜索框的id*/
var object = className('android.widget.ImageView').id("he6").findOne();
let b = object.bounds();
click(b.centerX(), b.centerY());
sleep(2000);
/*搜索的文字*/
setText('学生健康打卡');
sleep(200);
/*点击内容*/
className("RelativeLayout").depth(10).drawingOrder(3).findOne().click();
text("健康打卡").findOne().parent().parent().click();
sleep(3000);
text("健康打卡").findOne().click();
sleep(3000);
var a = text("+ 今日打卡").findOne().bounds();
click(a.centerX(), a.centerY());
sleep(3000);
if (className("android.view.View").text("今日已打卡,明天再来!").exists()) {
    
    
    toast("今日已打卡");
    goBack();
} else {
    
    
    toast("开始打卡");
    sleep(1000);
    swipe(500, 1500, 500, 500, 1000);
    /*电话*/
    directlyWriteInfo(4, phone);
    /*当前所在地*/
    writeAddress();
    /*详细地址*/
    directlyWriteInfo(7, detailAddress);
    /*租住在学校附近*/
    findView(8);
    writeInfo("否");
    /*体温*/
    directlyWriteInfo(9, "36.5");
    /*是否到过武汉*/
    findView(10);
    writeInfo("否");
    /*是否接触确诊人员*/
    findView(11);
    writeInfo("无接触");
    /*目前状况*/
    findView(12);
    writeInfo("正常");
    /*家属状况*/
    findView(13);
    writeInfo("正常");
    /*出现的症状*/
    indexInParent(15).depth(21).row(-1).findOne().child(0).click();
    /*今日外出行程*/
    setText([6], "无");
    /*提交*/
    indexInParent(17).depth(21).row(-1).findOne().child(0).click();
    /*确认提交*/
    text("确认提交").findOne().click();
    sleep(500);
    toast("成功打卡");
    goBack();
    /*qq群*/
    goto(qqqun);
    sendMessage();
    exit();
}

function findView(index) {
    
    
    indexInParent(index).depth(21).row(-1).findOne().child(1).child(0).click();
    sleep(500);
}
function writeInfo(message) {
    
    
    var info = text(message).findOne().bounds();
    click(info.centerX(), info.centerY());
    sleep(500);
}
function directlyWriteInfo(index, message) {
    
    
    indexInParent(index).depth(21).row(-1).findOne().child(1).child(0).setText(message);
    sleep(500);
}
function goBack() {
    
    
    for (let i = 0; i < 4; i++) {
    
    
        back();
        sleep(500);
    }
}
function goto(qqqun) {
    
    
    app.startActivity({
    
    
        action: "android.intent.action.VIEW",
        data: "mqqapi://card/show_pslcard?src_type=internal&version=1&card_type=group&uin=" + qqqun,
        packageName: "com.tencent.mobileqq",
    });
    text("发消息").findOne().click();
}
function sendMessage() {
    
    
    id("input").findOne().setText("1");
    id("fun_btn").findOne().click();
    toast("签到成功");
    sleep(500);
    back();
    home();
}

function writeAddress() {
    
    
    findView(6);
    /*省份*/
    var i = 0;
    var j = 0;
    var rect = className("LinearLayout").depth(5).drawingOrder(1).findOne().bounds();
    var exist1 = className("TextView").depth(7).text(province).exists();
    while (i < 10 && exist1) {
    
    
        /*为什么放里面,因为我每次都要刷新这个bounds*/
        var c = className("TextView").depth(7).text(province).findOne().bounds();
        print(rect.bottom + "--- " + rect.top + "----" + c);
        if (c.bottom < rect.bottom && c.top > rect.top) {
    
    
            click(c.centerX(), c.centerY());
            break;
        } else {
    
    
            swipe(rect.centerX(), rect.centerY(), rect.centerX(), rect.top + 20, 1000);
        }
        i++;
    }
    if (i == 10 || !exist1) {
    
    
        toast("请检查你输入的省份,并重新执行程序");
        exit();
    }
    /*市*/
    indexInParent(6).depth(21).row(-1).findOne().child(1).child(1).click();
    sleep(500);
    var exist2 = className("TextView").depth(7).text(shi).exists();
    while (j < 10 && exist2) {
    
    
        var l_shi = className("TextView").depth(7).text(shi).findOne().bounds();
        if (l_shi.bottom < rect.bottom && l_shi.top > rect.top) {
    
    
            click(l_shi.centerX(), l_shi.centerY());
            break;
        } else {
    
    
            swipe(rect.centerX(), rect.centerY(), rect.centerX(), rect.top + 20, 1000);
        }
        j++;
    }
    if (j == 10 || !exist2) {
    
    
        toast("请检查你输入的市,并重新执行程序");
        exit();
    }
}

使用する

  1. コードをカプセル化し、コードの最初の数行を自分の情報に変更するだけです。電話番号、都道府県、市区町村、詳細な住所、サインインするQQグループ、およびコードは各携帯電話に適合します。すべての電話は自動化可能でなければなりません
  2. jsコードが常に1行で表示される場合は、コードをフォーマットする必要があります。
    手順:ファイルを入力—>編集—>コードをフォーマット
  3. なお、アプリを開いた後は、ユーザー補助機能を初めてオンにする必要があり、何度か試行する必要があります。
  4. その後、自動的にクロックインできます

説明

  1. クリックした後すぐに反応することは不可能であるため、コードの多くの場所でスリープが使用されています
  2. 私は直接launchApp( "WeChat")なので、WeChatに入った後は、メインインターフェイスである必要があります。そうしないと、コントロールが見つからず、次のクリックイベントを実行できません。

総括する

わからない場合は、チャットにqq(3620841688)を追加できます。これはあまり見られ
ません。不十分な場合があります。指摘を歓迎します。スプレーしないでください。

おすすめ

転載: blog.csdn.net/zk2000416/article/details/113175708