Android自動腳本--實現(xiàn)自動滑塊校驗
最近在做某個應(yīng)用自動化操作時遇到滑塊校驗,本來以為獲取到滑動坐標(biāo)問題就完美解決,沒想到應(yīng)用有人機(jī)校驗,看來還是經(jīng)驗不足。

既然有校驗,那只能寫個算法去模擬人的滑動,開始為了偷懶節(jié)省時間,只進(jìn)行簡單的降速、中間隨機(jī)暫停等操作。事實證明天下沒有白吃的午餐,時間沒節(jié)省,體力到是花費(fèi)了不少。最后只能靜下心來,仔細(xì)研究人工操作時滑塊的軌跡。在這里記錄下校驗繞過算法,也希望能幫助有同樣問題的可以節(jié)省點(diǎn)時間。
初始值
??初始橫坐標(biāo):x
??初始縱坐標(biāo):y
??slong:滑動距離[此處是自左向右]
??最終x坐標(biāo):llx=x+slong
??滑動步數(shù):2次
??計算初次滑動距離 : dl
??????if(slong>200)
{
int dl = slong - 70;
if(slong>600) {
???dl = slong - 150;
}
else if(slong>400) {
???dl = slong - 100;
}
}
計算每步滑動的steps(Android): stepsm??
if(slong<=200)
{
??stepsm=getrandomnmber(80,120);
}
else if(slong>200&&slong<400)
{
??stepsm=getrandomnmber(120,170);
}
else if(slong>400&&slong<600)
{
??stepsm=getrandomnmber(170,200);
}
else
{
??stepsm=getrandomnmber(200,250);
}
注:
Android中每個steps消耗5ms。
getrandomnmber隨機(jī)產(chǎn)生2參數(shù)之間的隨機(jī)數(shù)
具體偽代碼如下:
if(slong>200)
???{
???
???????if(slong>200&&slong<400)
???????{
???????????stepsm=getrandomnmber(120,170);
???????}
???????else if(slong>400&&slong<600)
???????{
???????????stepsm=getrandomnmber(170,200);
???????}
???????else
???????{
???????????stepsm=getrandomnmber(200,250);
???????}
???
???????int dl = slong - 70;
???????if(slong>600) {
???????????dl = slong - 150;
???????}
???????else if(slong>400) {
???????????dl = slong - 100;
???????}
???????Point p1 = new Point();
???????Point p2 = new Point();
???????Point p3 = new Point();
???????p1.x = x;
???????p1.y = y;
???????p2.x = x + dl;
???????p2.y = y;
???????p3.x = llx;
???????p3.y = y;
???????tosleep(2000);
???????Point[] args = {p1, p2, p3};
???????mDevice.swipe(args, yst);
???????mDevice.swipe(x, y, llx, y,100);
???}
???else
???{
???????tosleep(2000);
???????stepsm=getrandomnmber(80,120);
???????mDevice.swipe(x, y, llx, y,stepsm);
???}
