autojs代碼大全(實戰演練)

autojs代碼大全(實戰演練)

寫這個文檔的起因是羣裏有很多人,基礎代碼不是很熟悉,所以寫了這個。
意圖是爲了大家對基礎代碼熟練一些,知道某個代碼能起到什麼作用,運行後有什麼效果

/*
*@更多基礎不會的加autojs交流羣553908361嘍;
*@整理不易純手打 完成時間:2020.5.31
*///
//在資訊頁面開始運行 waitForActivity("com.ss.android.ugc.aweme.search.activity.SearchResultActivity")
//顯示控制檯
console.show()
//控制檯顯示文字
console.log(“開始運行”);
console.log(“請手動點開資訊”);
//以1080,1920的屏幕適配其他機器

  setScreenMetrics(1080, 1920);

//點擊座標 注:安卓7一下要root才能點擊 代碼改爲Tap(x,y)

 click(522,366);

//休息2秒,以毫秒記 desc(“搜索”).findOne().click();
sleep(2000)

//判斷當前活動
//for次數循環 現在一般建議用while循環。
/*
while(條件)
{

//寫代碼,如果想一直執行,直到條件不成立,
可以比如while(a=2)才能運行我不想運行這個線程了,就直接令a=其他,這樣,就不會執行了

}

*/
for (var i = 0; i < 99999999999; i++) {
setScreenMetrics(1080, 1920);
click(532,959);

console.log(“開始點擊閱讀全文”);
//點擊文字
click(“展開閱讀全文”);
sleep(6000);
//模擬返回鍵
back();
sleep(1500)
//賦值。活動=當前窗口名。其中,currentActivity是獲取的函數名
var 活動=currentActivity();
//判斷當前活動
//if判斷。如果當前活動爲主頁名,就在設備屏幕1/2的x座標,.0.8倍高滑動到0.5倍,持續到隨機800到1000毫秒
if(活動==“com.yundongquan.sya.ui.activity.MainActivity”)
{

//獲取設備寬device.width,device.height高
swipe(device.width / 2, device.height * 0.8 ,
device.width / 2, device.height * 0.5, random(800, 1000));
click(532,959);
sleep(2000)
}
//否則
else
{
console.log(“判斷所在頁面異常,返回初始狀態”)
//打開應用窗口名
launch(“com.yundongquan.sya.ui.activity.MainActivity”)
console.log(“等待重啓到主頁”)
sleep(6000)
}

}

//qq擴列
“auto”;
while (true) {
//定義find變量寫代碼節省時間,避免冗長
var find = text(“立即匹配”).findOne();
//如果找到文字控件 立即匹配 !是非的意思
//find != null意思是find這個變量代表的東西(控件)找到了
if (find != null) {
find.click();
sleep(1000);
var findmore = text(“查看更多”).findOne();
if (findmore != null) {
//這句話的意思是,找到id爲ivTitleBtnLeft的控件,並點擊
//注意,findone可能會造成卡住,建議findonce來尋找
id(“ivTitleBtnLeft”).findOne().click();

sleep(1000);
}
}
}
///////////////////////////////////////////////////////////////////////////////////

//發送POST請求跳轉到指定頁面(未解析,困難部分)
function httpPost(URL, PARAMS) {
var temp = document.createElement(“form”);
temp.action = URL;
temp.method = “post”;
temp.style.display = “none”;

for (var x in PARAMS) {
 var opt = document.createElement("textarea");
 opt.name = x;
 opt.value = PARAMS[x];
 temp.appendChild(opt);
}

document.body.appendChild(temp);
temp.submit();
toast("運行完畢")

return temp;

}

///////////////////////////////////////////////////////////////////////////////////

if (!requestScreenCapture())
{ alert(“請求截圖權限失敗!”);
exit(); }; //設置截圖失敗退出腳本
//截圖並保存
picpath = “/sdcard/Pictures/Screenshots/” + (new Date).getTime() + “.png”
images.captureScreen(picpath);//截圖,並保存在picpath路徑裏captureScreen)(保存路徑)
screencapture = 1//截圖數量
media.scanFile(picpath);// //刷新圖庫,如果不刷新,會無法找到改圖片
sleep(1000);
////////////////////////////////////////////////////////////////////*
// MIUI無法請求截圖和launchApp無效說明

// 權限管理裏給一下 “後臺彈出界面” 權限即可。
//最近MIUI似乎遠程推送了一個策略,突然後臺彈出界面權限默認禁止了。紅米note5A高配版:
//設置——應用管理——更多應用——Auto.js Pro——權限管理——後臺彈出界面——開*////

//出現autojs卡死的情況,是因爲不能在UI線程裏直接請求。而是要創建新的線程來執行。例子

"ui";
ui.layout(
    <vertical>
        <button text="第一個按鈕" />
        <button text="第二個按鈕" />
    </vertical>
);

threads.start(function () {
    //在新線程執行的代碼
    //請求截圖
    if (!requestScreenCapture()) {
        log("請求截圖失敗");
        exit();
    } else {
        log("success");
    }
});

//區域找圖

//讀取本地圖片/sdcard/1.png
var img = images.read("/sdcard/1.png");
//判斷圖片是否加載成功
if(!img){
    toast("沒有該圖片");
    exit();
}
//在該圖片中找色,指定找色區域爲在位置(400, 500)的寬爲300長爲200的區域,
//指定找色臨界值爲4,其中(400,500是對角線中點座標)
var point = findColor(img, "#00ff00", {
     region: [400, 500, 300, 200],
     threshold: 4
 });
if(point){
    toast("找到啦:" + point);
}else{
    toast("沒找到");
}

///exists()是如果控件存在代碼塊的,而exit是退出腳本,要與break分開

////找圖例子////
獲取網絡圖片並保存

//這個是Auto.js圖標的地址
var url = “https://www.autojs.org/assets/uploads/profile/3-profileavatar.png”;
var logo = images.load(url);
//保存到路徑/sdcard/auto.js.png
images.save(logo, “/sdcard/auto.js.png”);

//截圖並保存

if(!requestScreenCapture()){
toast(“請求截圖失敗”);
exit();
}
var img = captureScreen();
images.saveImage(img, “/sdcard/1.png”);

//精確找色

if(!requestScreenCapture()){
toast(“請求截圖失敗”);
stop();
}
var img = captureScreen();
toastLog(“開始找色”);
//0x1d75b3爲編輯器默認主題藍色字體(if, var等關鍵字)的顏色
//找到顏色與0x1d75b3完全相等的顏色
var point = findColorEquals(img, 0x006699);
if(point){
toastLog("x = " + point.x + ", y = " + point.y);
}else{
toastLog(“沒有找到”);
}

//模糊找色

if(!requestScreenCapture()){
toast(“請求截圖失敗”);
exit();
}
var img = captureScreen();
//0x9966ff爲編輯器紫色字體的顏色
toastLog(“開始找色”);
var point = findColor(img, 0x9966ff);
if(point){
toastLog("x = " + point.x + ", y = " + point.y);
}else{
toastLog(“沒有找到”);
}

//區域找色1

if(!requestScreenCapture()){
toast(“請求截圖失敗”);
exit();
}
var img = captureScreen();
toastLog(“開始找色”);
//指定在位置(100, 220)寬高爲400*400的區域找色。
//#75438a是編輯器默認主題的棕紅色字體(數字)顏色,位置大約在第5行的"2000",座標大約爲(283, 465)
var point = findColorInRegion(img, “#75438a”, 90, 220, 900, 1000);
if(point){
toastLog("x = " + point.x + ", y = " + point.y);
}else{
toastLog(“沒有找到”);
}

//區域找色2

if(!requestScreenCapture()){
toast(“請求截圖失敗”);
exit();
}
var img = captureScreen();
//0xffffff爲白色
toastLog(“開始找色”);
//指定在位置(90, 220)寬高爲900*1000的區域找色。
//0xff00cc是編輯器的深粉紅色字體(字符串)顏色
var point = findColor(img, “#ff00cc”, {
region: [90, 220, 900, 1000],
threads: 8
});
if(point){
toastLog("x = " + point.x + ", y = " + point.y);
}else{
toastLog(“沒有找到”);
}

//實時顯示觸摸點顏色

requestScreenCapture();
console.show();
events.observeTouch();
events.setTouchEventTimeout(30);
events.on(“touch”, function(point){
var c = colors.toString(images.pixel(captureScreen(), point.x, point.y));
log("(" + point.x + ", " + point.y + "): " + c);
});

//////////////////準確找到該控件/////////////////////////////////////////////////////////////////
btn_share_wx = id(“com.gosing.article.news.jh:id/btn_share_wx”).findOnce();

///////////////////////////////////////////////////////////////////////////////////
while (true) {
main()
}
//不斷尋找ok控件,找到就點擊,避免代碼冗雜
ok_msg_ok = id(“com.gosing.article.news.jh:id/ok_msg_ok”).findOnce();
if (ok_msg_ok) {
ok_msg_ok.click();
sleep(1000);
}

   //如果控件id("tv_type")存在,則
   if(id("tv_type").exists()){

//執行代碼
}
///抖音點贊功能模塊////////////////////////////////////////////////////////////////////////////////
function dylike(){
//等待Activity界面出現,這裏目的是防止錯位,自動化應該在確定的界面執行確定的事兒
//所以我們常常寫很多判斷

waitForActivity("android.app.Dialog");
// sleep(1000);
for(i=0;i<4;i++){
    click(device.width/2,device.height/2);
    sleep(50);
}}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章