网站首页 > 知识剖析 正文
大家好,我是公众号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
测试结果截图:
猜想,未必是对的
平台是怎么知道滑动时用脚本的呢,我猜测是判断触点数量,触点是否是一条直线,触点间隔是否平均,结尾处触点是否密集。
=正文完=
猜你喜欢
- 2025-06-28 组合SISTAR公开新专 性感热曲引期待
- 2025-06-28 换新手机最烦传文件,尤其是苹果和安卓机,你该学学这招
- 2025-06-28 原创自研uniapp+vite5+pinia2手机版后台OA系统
- 2025-06-28 「龙腾网」心理探秘:为什么悲伤的歌曲会让我们感觉良好?
- 2025-06-28 小程序echarts和分包使用(微信小程序echarts降低层级)
- 2025-06-28 一块铝合金的非凡「铝生」:认识 Magic Trackpad
- 2025-06-28 SISTAR多顺自曝与名模柯尔摩亲密照
- 2025-06-28 在小程序里实现一个知乎浮动按钮(知乎小程序怎么用)
- 2025-06-28 「按键教程」若干坐标点依次模拟人工滑动
- 2025-06-28 事件——《JS高级程序设计》(js高级程序设计怎么样)
- 最近发表
- 标签列表
-
- xml (46)
- css animation (57)
- array_slice (60)
- htmlspecialchars (54)
- position: absolute (54)
- datediff函数 (47)
- array_pop (49)
- jsmap (52)
- toggleclass (43)
- console.time (63)
- .sql (41)
- ahref (40)
- js json.parse (59)
- html复选框 (60)
- css 透明 (44)
- css 颜色 (47)
- php replace (41)
- css nth-child (48)
- min-height (40)
- xml schema (44)
- css 最后一个元素 (46)
- location.origin (44)
- table border (49)
- html tr (40)
- video controls (49)