前段时间发了个帖子咨询了一下关于 app 端多语言多分辨率如何使用自动化提示效率的问题,确实是不好针对 UI 进行快捷的检查,因此想另辟蹊径,在自己开发的云真机平台上添加一个群控功能,这样测试就能同时查看多个分辨率或者语言的设备了,好歹也是能快不少,但是目前只是简单实现了通过设备分辨率去转换一下操作坐标,误差还是挺大的,想咨询一下大佬们怎么能提高同步操作的准确率呢,图片识别?元素识别?具体应该怎么实现呢,能否提供一些思路呢
考虑结合控件 id、xpath 语法 一起去做精确控制(前提是测试自己的产品,预埋好控件 id,测试别人的就很难说)
是测自己公司的产品,不过也有很多是没有 id 的 ,如果使用这种方法的话是主控设备每操作一次就自动获取一下当前操作位置的元素,然后再操作其他设备吗,感觉这样也不是很稳定吧,而且滑动这种操作怎么办呢,不同设备显示的内容也可能会有差别
【如果使用这种方法的话是主控设备每操作一次就自动获取一下当前操作位置的元素,然后再操作其他设备吗,感觉这样也不是很稳定吧】
是的,要有一定获取策略,稳定性上取决于本身预埋 id 的完整度以及 dump 控件的稳定性了,前者你们可控,后者就靠开源工具。
滑动操作,其实一样的逻辑,你不一定非要一次性滑动到位(除非产品就要求这样的交互逻辑),你可以多次少量逐渐滑到差不多的地方,【差不多】的定义也可以通过控件树比对来实现。
内容有差别,我们内部是通过 mock 所有服务端请求去实现,使得多台手机接受完全一致的服务端返回,否则这个问题你用什么神仙技术都绕不过。
感谢大佬指点,想请问一下获取当前操作位置的元素,是每操作一次后 dump 页面元素后,对比操作的位置去 dump 中获取吗,另外目前是基于 scrcpy 实现的云真机,所有的操作都是由 down、up、move 组成的,应该只有点击操作才需要获取元素吧,如何区分点击和滑动呢(像 SoloPi 是先拦截操作,每操作一下需要选择当前的操作类型,使用比较麻烦)
我前面说的都是些浅表了解,我个人没做过,所以只能给个参考,不好说就真的能 work。
【获取当前操作位置的元素,是每操作一次后 dump 页面元素后,对比操作的位置去 dump 中获取吗】
我没完全看明白是什么,说的有点绕。
第二个问题涉及具体实现,我没有相关实现背景,也就不清楚在说什么了。
第一个问题就是主控设备在操作时,在点击时自动 dump 当前页面,然后根据点击的位置从 dump 页面中获取操作所在位置的元素 xpath,然后把 xpath 发送到控制设备执行点击,是这种实现流程吗
是的,大体就是这样的思路。
我没想过这么细,临时来想想,首先主控设备上要获取到你点击控件的 id,精确 id 获取不到就改成 xpath。然后把这个传送到被控设备上去寻找,存在的话那被控设备就做同样的操作,不存在那可能要报错或者出现异常了