【小技巧】手机滑动难控制?找一个锚点二次微调完美解决
评论
收藏

【小技巧】手机滑动难控制?找一个锚点二次微调完美解决

经验分享
阿深
2024-08-30 17:57·浏览量:2801
阿深
发布于 2024-08-30 17:572801浏览

一、问题场景

在协助客户进行手机自动化的问题解决时,我们经常会遇到需要循环往下滑动屏幕获取信息或者点击的场景。在大多时候时候,这类场景都对精准的滑动控制有着较高的要求,我们要尽量避免出现滑过头(漏拿信息)或者没滑到位(需要进行去重)的情况。

而即使使用坐标+增加滑动时间减少屏幕滑动惯性的方式,再循环滑动几次之后,也很容易会发生偏移的情况。

二、问题分析

上面这个gif图,即是采用坐标+增加滑动时间的方式,但是可以看到,再循环几次之后,位置就已经发生了偏移。

在我看来,这是因为两个原因导致的:

  1. 我们很难测量到完全精确的坐标,在从y值xxx滑到y值xxx时,只要有一小点的偏差,那就会随着循环被不断地放大,导致偏差越来越大。
  2. 涉及到长距离的坐标滑动,或多或少会伴随着惯性产生些许偏移。

分析完问题后,我们即可得到一个假设:假如每滑动一次,就进行一次细微的调整,是不是就能保证每次的滑动都是符合预期的?

三、解决方案

在得出这个假设之后,问题其实就简单很多了,剩下要解决的就是:我们要以什么作为参照物进行微调,每次微调的距离怎么计算?

参照物可以理解为锚点,我们要找一个相对固定的元素来作为我们每次微调的锚点,根据它的坐标来进行微调。

以下图为例,在每一个信息块中,都有XXX条视频这个文字描述,那它就很适合作为我们的锚点。我们可以获取页面第一个XXX条视频的y值坐标(420),那此时的y值420即是我们的标准值。

如果滑动后,页面第一个XXX条视频的坐标y值不等于420,我就让屏幕从它的当前y值滑动到420上去。

如此一来,我们就实现了一次细微的滑动,而这种滑动由于距离很短,会非常的准确。

那在循环滑动的过程中,每滑一次就进行微调也会使得滑动变得非常“完美”和“精准”。

四、参考流程

这个方案的核心是找锚点获取坐标,但由于手机自动化经常会遇到获取不到ui树无法捕获元素的情况,我这里列出一些可以获取锚点坐标的方式:

1. 【获取手机元素信息】-获取元素位置:首选,这个方法适用于捕获元素没问题的情况。

2. 【获取图像坐标】-获取列表中第一个图像的坐标:这个方法适用于无法捕获元素,但是每块信息都有一块相同的标识的情况。

3. 【屏幕截图】-【影刀离线OCR】-获取相同标识的文本的坐标:同上,适用于无法捕获元素,但是每块信息都有一块相同的标识的情况。

例如,刚刚的案例即是无法获取ui树无法捕获元素的情况,但是它的每一个信息块中都有 XXX条视频,那我们即可以用图像ocr的方式去获取它的位置。

在这里,我用的是图像的方式👇

最后,来简单看运行效果吧~

收藏48
全部评论1
最新
发布评论
评论