关于为什么拿一台手机开发后,换了设备就无法识别的讨论
1.节点类节点选择器是会变的,尤其id
以dy为例,dy的节点id("com.ss.android.ugc.aweme:id/c=s")是典型的随机id,
会随着安卓版本,app版本,手机系统不同而改变,因此要控制这些保持一致,才能一定程度上保证不变
有些人会碰到,什么都不变,节点也变了
那是因为随着设备性能的提高,方便编写的网页得到了极大的发展,很多页面是由webview渲染的,也就是网页,因此app厂商可以通过更改网页内容,而修改节点信息,不需要通过更新app实现
因此不要纠结节点为什么变了,变了就增加识别
2.图色类
图色一直都有偏色和相似度的概念
因为每台手机的显卡不同,即使是同一台手机,由于渲染原理导致每次渲染也会有细微差别,没有一张图是完全一样的,哪怕是同一个页面的相邻两次截图
很多app为了预防脚本也会对画面进行混淆,或者对截图接口进行污染,ec有很多个截图命令,可以一定程度上规避app混淆
因此适当的偏色和相似度是必须的
当相似度无法解决,只能通过增加颜色/图片识别来解决
因此先通过截图到本地,来查看图片是否正常,再通过图片来测试之前的图色是否已失效
不能用就重新加图识别
所谓的全分辨率找图,是通过缩放实现的,而缩放会丢失精度,所以失败也是正常的
3.ocr/yolo
识别率低是正常的,因为识别的背景一直在变,算法无法覆盖所有场景
只能通过不断追加训练来提高识别率,无法达到100%,或者通过其他方法妥协
4.api类
当使用某一个命令,或者用java编写的插件时,经常换了设备就失效
大部分是由于权限未授权完整导致,或者授权了未生效,此时需要重启手机,这是系统bug
另外由于系统的不断发展升级,很多功能会随着升级被删除而导致失效
安卓方面,由于国产手机都是基于原生安卓进行的魔改,会对某些功能进行限制,因此不同手机执行效果也会不同
这些都需要自己通过不同的项目进行积累经验
先想到这么多,有更好想法的欢迎讨论
页:
[1]