一、背景说明

微信作为一种广泛使用的通讯工具,通讯录中包含了大量的客户、合作伙伴或员工的联系信息。

在某些情况下,可能需要将微信通讯录中的联系信息导出,用于数据分析、客户关系管理(CRM)系统更新、备份或其他合法的商业用途。

微信本身并不提供直接的通讯录导出功能,这就需要通过自动化工具来实现。

今天分享一个RPA导出微信通讯录到excel案例。

二、需求分析

正常操作步骤:

  1. 打开微信窗口

  2. 点击通讯录

  3. 点击好友

  4. 获取信息

四个步骤即完成第一个通讯录信息的获取,但我们是需要获取多个通讯录信息,就需要反复操作以上的几个步骤,直到获取完通讯录为止。

流程图:

流程不复杂,但实现过程中,细节上有难点。

三、前置条件

1)提前准备一个excel文件

2)设置一个通讯录数量

通讯录列表,我们不知道具体多少个好友

因此获取通讯录是使用无限循环指令,需要一个终止的条件。

比如好友有300个,那么就设置数量为300,达到这个数量,RPA机器人会终止执行。

四、实现思路

问题一:

打开通讯录,通常会看到【新的朋友】,【公众号】,【企业微信通知】

这几个是不需要获取信息的,可以直接跳过。

解决思路:

提前将窗口滑动到第一个通讯录的位置,只需要从通讯录第一个开始获取信息,

通讯录都有字母编排,A就是最前面的一个了。

问题二:

通讯录中间会出现【微信团队】,【文件传输助手】

这两个也不用获取信息,要跳过操作,否则会导致异常中断

解决思路:

添加一个【Try Catch】指令,如果获取不到通讯录信息,会有异常,则跳过当前步骤,继续执行下一次操作

问题三:

如果是小窗口,正常只能获取到【10个】通讯录好友,

每次操作完成10个,就要滑动鼠标!!

这里就有两个问题:

  • 操作到第几个通讯录好友,开始滑动鼠标?

  • 滑动鼠标,滚轮应该滑动多少次数?

解决思路:

刚开始我使用获取相似元素的方式实现

新的问题产生了

1)鼠标下滑滚动的次数,没有一个具体指标值,下滑滚动次数不够,重新捕获元素会导致重复点击,重复获取数据

2)原先的思路是每次操作到第9个,则提前【滑动】鼠标滚轮,实现翻页效果。

如果下滑次数偏多,也会导致上一次还没有点击的通讯录被滑掉了,停留在遮挡区,之后就点击不到了!!!

3)还有一种极端的情况:

滑动的时候,尴尬了,最后一个通讯录好友只看到一半,鼠标也会点击不到

4)如果微信窗口最大化,会直接影响到整个流程实现,最大化的窗口,每次通讯录列表捕获到的数量就不止10个了!!!

5)鼠标会卡顿现象,导致滑动效果不佳

最终解决方案:

不要使用循环相似元素的方式,通过模拟键盘按 【DOWN】键,一个一个向下滚动,每次获取完一个通讯录,就按一次【DOWN】键。

这种方法稳定性很高,基本上兼容很多问题了。

最终效果图:

以上提供一种解决思路,下面用数据表格的方式,实操一下:

1)设置导出数量

设置数量的目标是,后面作为一个终止条件

2)获取微信窗口

3)点击通讯录

4)鼠标停留在特定位置上

通讯录列表,会按照字母进行排序,前几个不是我们需要采集的信息,可以跳过。

5)根据配置的导出数量次数,开始for循环

对话框的输入时文本,需要转换成为整数类型 ,点亮python语法,int(input_dialog.value)

6)写入昵称

捕获微信昵称元素 > 获取元素信息

写入数据表格

7)写入标签

捕获标签元素 > 获取元素信息

标签不是每个好友都有,需要设置一下异常情况,捕获不到的默认值为None,方便后续判断

标签不为None,才进行写入数据表格

8)继续下一个好友采集

全流程: