京東2020雙十二活動終於來啦,指令碼助你領年終

誰是機器人發表於2020-12-07

寫在前面

千呼萬喚始出來,京東終於加入了今年雙十二的大戰了,不得不說,京東今年確實有點遲了,不過作為京東的忠實使用者,筆者還是在第一時間熬夜寫出了指令碼檔案供大家學習使用

關注微信公眾號“口袋閱打卡小助手”,後臺回覆"京東雙十二",獲取指令碼/APK檔案(指令碼檔案將在文末開源,大家安心哦)

使用教程

開啟桌面的京十二圖示

如果是第一次執行會申請許可權,請允許

然後頁面也跳轉到開啟無障礙的頁面,手動開啟無障礙模式,具體操作如下圖所示

開啟後重新執行京十二,系統會提示需要懸浮窗許可權

這裡需要大家手動開啟懸浮窗許可權哦,由於不同手機開啟方式不太一樣,大家可以自行百度,筆者使用的是小米8 MIUI12系統,開啟介面如下

開啟即可

到這裡,需要設定的地方就都結束了,可以直接執行京十二APP了

不過執行過程中會申請京東應用的開啟,大家小手記得點下允許

下面是執行GIF,不過筆者這裡除錯程式碼的時候都執行結束了,大家看個現象吧

執行效果GIF

 

指令碼程式碼

auto.waitFor();
var height = device.height;
var width = device.width;
toast("開啟2020京東雙十二")
setScreenMetrics(width, height);

function gotoAct() {
    log('準備啟動京東APP')
    launch('com.jingdong.app.mall')
    log('京東APP開啟成功')
    MySleep(4, 5);
    log('準備進入京東雙十二活動頁面,如果頁面有其他彈窗,請手動關閉下')
    let actWid = descContains('浮層活動').clickable(true).findOne(500);
    click(actWid.bounds().centerX(), actWid.bounds().centerY());
    MySleep(4, 5);
}

function gotoActFromIndex() {
    let actWid = descContains('浮層活動').clickable(true).findOne(500);
    click(actWid.bounds().centerX(), actWid.bounds().centerY());
    MySleep(4, 5);
}

function isIndexPage() {
    let actWid = descContains('浮層活動').clickable(true).findOne(500);
    if (actWid) {
        return true;
    } else {
        return false;
    }
}

console.show();
log('執行指令碼請先將京東商城APP從後臺殺掉,保證執行過程中出現錯誤較少')
MySleep(2, 3);
gotoAct();
while (!isActPage()) {
    log('程式未正確進入活動頁面,請手動進入')
    MySleep(2, 3);
}
if (isActPage()) {
    log('進入活動頁面成功')
}

finishTask();
lingHB();
alert("任務已完成", "所有任務貌似都做完啦!\n若仍有任務請重新執行噢!");

function lingHB() {
    if (isActPage()) {
        let kaihongbao = text('開紅包').depth(14).clickable(true).findOne(1000);
        while (kaihongbao) {
            kaihongbao.click();
            MySleep(2, 3);
            let shouxia = text('開心收下').findOne(1000);
            click(shouxia.bounds().centerX(), shouxia.bounds().centerY())
            MySleep(2, 3);
            kaihongbao = text('開紅包').depth(14).clickable(true).findOne(1000);
        }
    }
}

function finishTask() {
    let taskBS = ['去完成', '去瀏覽']
    for (let i = 0; i < taskBS.length; i++) {
        lingHB();
        let task = taskBS[i];
        let taskWid = text(task).depth(14).clickable(true).findOne(1000);

        while (taskWid) {
            let textWid = className('android.view.View').indexInParent(taskWid.indexInParent() - 2).depth(14).findOne(500);
            taskWid.click();
            log('去完成:' + textWid.text())
            MySleep(2, 3)
            let count = 0;
            while (count++ < 5) {
                MySwipe();
                MySleep(0.5, 2);
            }
            back();
            MySleep(2, 3);
            if (isIndexPage()) {
                gotoActFromIndex();
            }
            while (!isActPage()) {
                back();
                MySleep(2, 3);
            }
            taskWid = text(task).depth(14).clickable(true).findOne(1000);
            MySleep(2, 3);
        }
    }
}

function isActPage() {
    let actPage = textContains('領最高1212元紅包').depth(16).findOne(500);
    if (actPage) {
        return true;
    } else {
        return false;
    }
}


function random(min, max) {
    return Math.round(Math.random() * (max - min)) + min;
}

function MySwipe() {
    var sX = random(100, width - 100);
    var sY = random(height / 2 + 100, height - 100);
    var eY = random(100, height / 2 - 100);
    swipe(sX, sY, sX, eY, random(100, 120));
}

function MySleep(Min, Max) {
    sleep(random(Min * 1000, Max * 1000));
}

 

相關文章