集大成者的和信流程自动化机器人竟然不能识别微信?
这不能忍!尝试过所有识别模式后发现,微信的架构并不是我们平常所见的程序一样,微信的界面由Duilib库开发, RPA软件 的UIA、win32等模式均不能识别出界面元素,这是一个很神奇的库,它的界面就是一个画布。
需求:
RPA能够正确的识别微信元素。能够正常的收发信息。
开工:
使用spy++查看微信窗口句柄:没有更多的元素。

思前想后得到3种方向,来分析可行性:
1、 使用逆向开发获取所需要元素的地址
2、 使用第三方库:itchat,wxpy等等。
3、 使用图像识别
原因分析:
逆向开发
1、 技术难度高。
2、 目标程序升级后,地址可能会发生变化,需要重新校验。
小结:不但技术难度大,学习成本也高,在短时间内,几乎不能好好的做出一个成品,弃用。
第三方库:
哇,这个库不错,几乎涵盖了所有需要的功能:如基本的收发信息,查看列表等等工具都是全的。并且有本地库,下载安装都很方便。
下载安装搭建环境,扫码登录:

弹出一句话:为了安全不能登录网页版??现在已经知道了,这是使用微信网页版接口整合的一个库。此方法也不能解决完所有需求,遂弃用。
小结:emmmm~不能覆盖所有场景。
图像识别
还有最后一个办法了,试试看:
图像识别就是在大图中找小图的位置,通过像素对比,结合误差率,达到某个误差率即为识别成功。
像素对比法:

测试过后:一个14*14的图片识别需要近10秒才能出来,太慢,完全达不到识别需要的速度。
继续想办法,观察微信程序,发现微信的图标都是固定的,那么可以识别一个基准点,推算出其他所有的坐标吗?经过测试,固定的元素都可以识别。但可以动的元素还是不行,继续想办法。
终于发现一种图像识别的技术,毫秒级识别速度,完全可以代替像素比较法。
最后总结:
微信识别模式开发总算完成,通过坐标与图片识别技术结合,推算出最适合的目标位置,识别速度能够达到500ms以内,如果和AI结合的话,目前我们能够达到100ms以内。
开发过程算是一个漫漫探索的长路,继续探索更好更快的办法,使RPA流程化机器人更强大。