日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > windows >内容正文

windows

dynamic 365 js 失去焦点_基于Auto.js的QQ好友动态秒赞系统

發(fā)布時間:2024/7/23 windows 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 dynamic 365 js 失去焦点_基于Auto.js的QQ好友动态秒赞系统 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

0.腦筋急轉(zhuǎn)彎

請問在什么情況下
log(10) == 10
log(20) == 20

? ? ????????????????????????左滑查看答案????????????????????????????????????????????????console.log(10) 是 10
????????????????????????????????????????????????????????????????????????????????????????????????console.log(20) 是 20

1.工具選擇

上次的螞蟻森林能量收取項目中,我們使用了adb對手機(jī)進(jìn)行操作,從而根據(jù)計算機(jī)的計算結(jié)果對能量球位置進(jìn)行點(diǎn)擊。

adb的全稱是Android Debug Bridge,即安卓調(diào)試工具,在連接安卓設(shè)備之后可以查看其設(shè)備信息,模擬點(diǎn)擊觸控等操作。但是其缺點(diǎn)是,需要連接PC設(shè)備執(zhí)行操作命令,且需要打開USB調(diào)試功能,根據(jù)華為安全中心的提示,打開USB調(diào)試功能可能使手機(jī)出于風(fēng)險之中。

所以我們應(yīng)當(dāng)謀求一種,可以在安卓設(shè)備上獨(dú)立運(yùn)行,不需要USB調(diào)試功能或者Root權(quán)限,操作簡單、用戶體驗良好的操控腳本。實際上早在上次螞蟻森林能量收取項目中,我們就注意到了Auto.js這種工具,只不過上次的能量收取是當(dāng)娛樂節(jié)目來做的,為了節(jié)目效果,采取了一種南轅北轍的方法。

2.Auto.js簡介

顧名思義,Auto.js使用JavaScript作為腳本語言,目前使用Rhino 1.7.7.2作為腳本引擎,支持ES5與部分ES6特性。

一切可以用JavaScript實現(xiàn)的,都將用JavaScript實現(xiàn)。使用auto.js不但可以在安卓設(shè)備上獨(dú)立運(yùn)行腳本,且?guī)缀醪恍枰猆SB調(diào)試和ROOT權(quán)限,只需要打開手機(jī)上的無障礙服務(wù)。

3.安裝

auto.js支持我們?yōu)樗鶎懩_本設(shè)計用戶界面,甚至可以將界面和腳本內(nèi)容打包成apk。然而,打包為apk后,會失去腳本語言的靈活性。

因此我們可以下載安裝一個auto.js.apk,相當(dāng)于一個運(yùn)行平臺,然后在上面運(yùn)行我們臨時編寫的腳本。

這個安裝包在江湖上幾近失傳,大家可以從我的網(wǎng)盤上下載。

鏈接:https://pan.baidu.com/s/1S7CL9-ZolyntDr-bOEaWnQ
提取碼:pj9n


安裝好了之后,可以看到,這無非就是一個app。在腳本菜單下,我們可以編寫自己的臨時腳本,并進(jìn)行運(yùn)行。此外附贈了一個懸浮球,這個懸浮球其實非常有用!他可以懸浮于其他應(yīng)用之上,方便在其他應(yīng)用上運(yùn)行腳本,還可以分析其他應(yīng)用的視圖結(jié)構(gòu)。
如上圖,我們可以利用懸浮球提供的功能觀察微信的界面視圖結(jié)構(gòu),并查看具體控件的信息。

4.基本的auto.js控制命令

auto.js的功能其實十分強(qiáng)大,包括一些http操作、用戶界面設(shè)計。但我們目前比較關(guān)心的是如何通過它對手機(jī)進(jìn)行操控。

auto.js提供基于位置和基于控件兩種控制方式。

1)基于控件的控制方式

這種方式非常像JavaScript的DOM操作。首先用一個類似于選擇器的方法選中想要操作的控件,再執(zhí)行相應(yīng)的如單擊、長按、輸入等操作。


譬如我們想要點(diǎn)擊這個查詢按鈕,我們查看該控件發(fā)現(xiàn),其id被指定為了iq,因此可以通過id鎖定這個控件。可以通過下述代碼實現(xiàn)。

var iq = id("iq").findOne();
iq.parent().click();

其中id()方法即上述的選擇器,用于選中id為iq的控件(元素)。此外還有className() 類名選擇器、desc() 文本描述選擇器等等。

選擇器選中后,可能會有多個控件被選中,這里我們可以執(zhí)行findOne()方法取回其中一個(注意這里取得的不一定是從上往下看的第一個,其取法遵循DFS的原則),也可以執(zhí)行find() 方法,取回所有控件。

同時我們注意到,上述分析控件時,iq的clickable屬性值為false,這說明這個控件是不可點(diǎn)擊的。而真正可點(diǎn)擊的是該控件外層的第一個父元素。因此我們通過parent()方法可以獲取當(dāng)前控件的父元素,再執(zhí)行click方法即可實現(xiàn)點(diǎn)擊。

值得注意的是,這里id(),className(),desc()等,都是auto.js定義好的全局函數(shù)。定義全局函數(shù)往往不是個良好的編程習(xí)慣,但在這一特殊的情境下,這些全局函數(shù)選擇器還是非常好用的。

2)基于位置的控制

基于控件的控制當(dāng)然最好不過,可遷移性也很出色。但事情往往不盡人意。
對于一些游戲的界面,其布局往往是非常神奇的,展現(xiàn)給我們的只有一個FrameLayout,但里面卻包含了許多東西。我們并沒有安卓游戲的開發(fā)經(jīng)驗,只能猜測這張F(tuán)rameLayout大致相當(dāng)于HTML5中的畫布,其中可能包含許多更微觀的元素,但整體作為一個元素表現(xiàn)出來。這時空間分析的方法就會失效,我們不得不獲取截圖進(jìn)行分析,計算出點(diǎn)擊位置再通過基于位置的方法進(jìn)行觸控操作。

下面舉兩個基本的基于位置控制的例子

//點(diǎn)擊坐標(biāo)為(x,y)的位置
click(x,y);
//從坐標(biāo)(x1,y1)滑動到(x2,y2),耗時durationhaomiao
swipe(x1,y1,x2,y2,duration);
3)兩種方法比較
方法基于控件基于位置
場景一般APP游戲等APP
優(yōu)點(diǎn)遷移性好,分辨率無關(guān)可以基于當(dāng)前截圖分析
缺點(diǎn)一些特定場景無法分析控件可能需要考慮分辨率

5.QQ空間秒贊實現(xiàn)

實現(xiàn)秒贊的思路并不復(fù)雜,可以通過下面的偽代碼實現(xiàn)

while True:
刷新動態(tài)
找到第一個點(diǎn)贊按鈕
if 該點(diǎn)贊按鈕未被點(diǎn)贊:
點(diǎn)擊該按鈕

我們再來分析一下好友動態(tài)頁面的結(jié)構(gòu)

QQ的見鬼之處就在于,其幾乎所有的控件id都是name。這時我們可以通過className和desc兩個屬性來鎖定點(diǎn)贊按鈕。

className("ImageView").desc("點(diǎn)贊")

但是由于一些原因,當(dāng)頁面上同時有兩個以上點(diǎn)贊按鈕時,findOne()方法并不總能找到我們想要的第一個按鈕。因此真實的代碼應(yīng)當(dāng)如下

//獲取用于刷新動態(tài)的點(diǎn)擊區(qū)域
var dynamic = className("TextView").text("好友動態(tài)").findOne().parent().parent();
//開始刷新點(diǎn)贊循環(huán)
while(true){
dynamic.click();
//由于上財網(wǎng)速較慢(要多慢有多慢,慢的令人發(fā)指……省略三千字)
//此處休息兩秒等待動態(tài)刷新。
sleep(2000);
//向下滑動一段距離,防止當(dāng)前頁面上沒有點(diǎn)贊按鈕
swipe(200,800,200,200,50);
//選擇頁面上所有的點(diǎn)贊按鈕
var love = className("ImageView").desc("點(diǎn)贊").find();
//對每一個沒有點(diǎn)贊的按鈕進(jìn)行點(diǎn)擊
for(var i = 0; i < love.length; i++){
if(!love[i].selected()){
love[i].click();
}
}
}

6.效果圖

7.總結(jié)

通過安卓腳本的方式,點(diǎn)贊速度的極限可以無限逼近于上財校園網(wǎng)提供的最短刷新時間。
近年來,微信QQ等都推出了python等語言的包,可以實現(xiàn)消息發(fā)送等功能,通過這種方法或許能更快的實現(xiàn)點(diǎn)贊等功能。

8.鳴謝

特別感謝何老師每天發(fā)各種有趣的QQ動態(tài)。

總結(jié)

以上是生活随笔為你收集整理的dynamic 365 js 失去焦点_基于Auto.js的QQ好友动态秒赞系统的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。