大家好,我是公衆号3分鐘學堂的郭立員~
這是一篇分析類型的文章,主要講關于滑塊滑動的問題,大家應該遇到過這麼一種情況,用腳本操作滑塊,明明已經滑到位了,就是驗證不通過。
當我們手動滑動的時候,即使是滑動稍微差一點,也可以驗證通過,這就很神奇啊。
那麼手動滑動和腳本滑動到底有什麼區别呢?
【1】先來看看兩種方式的滑動軌迹
打開指針位置,方便查看。
①手動滑動
②腳本滑動
【2】根據上面兩個圖,分析兩種方式的區别
①劃線的筆直程度,手動我已經盡量筆直了,但是尾部還是有一點點彎曲。
②手動滑動的“觸點”要遠多于腳本滑動的,觸點指的是上圖中的小紅點。
③腳本滑動的“觸點”是平均分布的,而手動的不是。那它有啥特點呢?觸點間的間隔是非平均的,速度越快、間隔越大,收尾處要比前面密集。
分析了兩者的區别,我感覺“觸點”的産生可能是因為手對屏幕的按壓力度不同,滑動時的短暫停頓等原因。
腳本模拟手動滑動
(1)不使用swipe命令,使用touchdown、touchmove、touchup這一組命令,這組命令可以通過touchmove的數量和它的參數控制“觸點”數。
(2)引入兩個随機數,一個是觸點間隔的随機,一個是避免直線而做的滑動上下波動的随機。
(3)觸點間隔前半部分比較大,結尾部分間隔比較小,采用分段滑動策略。
腳本源代碼
/*
@測試設備:雷電模拟器
@分辨率:540*960 dpi 240
@作者:郭立員
@公衆号:3分鐘學堂
@聲明:僅供學習使用
*/
/*
參數說明:
參數1:按鈕橫坐标
參數2:按鈕縱坐标
參數3:要滑動距離
*/
滑動(56,487,370)
Function 滑動(x,y,distance)
Dim rnd1,rnd2,d,h
Dim speed=10
TouchDown x,y,1
Do
rnd1 = Int(speed * Rnd() 1)
rnd2 = Int(3 * Rnd() - 1)
d = d rnd1
h = h rnd2
If d > distance Then
TouchMove x distance, y h, 1
Exit do
else
TouchMove x d, y h, 1
End If
If d > distance*0.7 Then
speed=3
End If
Loop
TouchUp 1
End Function
測試結果截圖:
猜想,未必是對的
平台是怎麼知道滑動時用腳本的呢,我猜測是判斷觸點數量,觸點是否是一條直線,觸點間隔是否平均,結尾處觸點是否密集。
=正文完=
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!