1。概述不知道大家有没有遇到过微信给通讯录里的人发消息,出现这样的场景:平时我一直认为自己的心理素质非常好,但是当我遇到这种情况时...等了半个小时(半分钟),我慢慢拿出手机,打开微信,在通讯录里找到ABC,默默的按下删除键,而这一刻,我的心依旧如水。。.好了,言归正传,为了避免以上情况再次发生,我决定把微信通讯录里所有删我的人全部找出来删掉。我了解到,查看微信是否被删除最好的方式就是转账,通过转账我们可以做到无痕检测。下面通过两张图来看看微信删除前后给别人转账的效果:知道了检测方法,准备一一测试的时候,不自觉的刷了微信通讯录列表,100,200……500……我去!加了这么多人的时候,我一边滑动列表一边扫了一眼微信名字:A卖保险,B办信用卡,C游泳健身,D卖保健品……现在才知道微信里有这么多地址簿。谜底,不过有个问题,这么多人手动一个一个转账不累……如果手动执行的方法不行,能不能通过编程实现自动化?想到这里,我陷入了沉思……忽然脑子里灵光一闪(不是抽筋),思绪渐渐清晰起来。前几天不是写过Python+Appium自动化微信运维介绍吗?应该可以使用这个。编程的基本思路如下:获取微信通讯录列表中每个人的姓名(备注),记录下来。这个就不重复了,因为即使之前加好友的时候有重复,你也会更改在笔记中遍历得到的通讯录得到的通讯录列表,分别对每个人进行转账操作。如果检测到删除自己的人,则对其进行删除操作。检测下一个人,重复循环2。在模拟器上测试Appium模拟微信转账,环境可能会有些问题,所以本文使用真机来实现。先简单介绍一下真机环境,然后再看看相应的步骤。从桌角拿出我的小米5s手机(MIUI10.2,Android8.0.0),擦去灰尘,用数据线连接电脑。信号在手机中依次执行(点击):设置->我的设备->所有参数->MIUI版本(多次点击开启开发者模式)->返回设置列表->更多设置->开发者选项->打开开发者选项,分别打开:USB调试、USB安装、USB调试(安全设置)选项,如图:这时候会在屏幕上弹出USB使用情况的弹框手机,我们可以选择传输文件(MTP),如图:在电脑CMD中执行adbdevices命令,看能否找到手机。例如下图所示的结果就是成功的结果。在上述步骤中,您可能无法找到您的手机。一般出现这种情况是驱动问题。这里提供一个简单的处理方法:下载一个驱动精灵,安装后点击驱动管理并启动,然后安装相应的驱动即可解决。如图:通过上面的一系列操作,我们已经处理好了真机环境。Appium的环境我就不在这篇文章里讲了。不懂的可以看看:入门Python+Appium自动运维微信。3.实现现在让我们开始手动输入代码。如果你不了解Appium的基本代码操作,还是可以看看我之前写的这篇文章:Python+Appium自动化微信操作介绍。先看对应的参数配置,代码实现如下:desired_caps={"platformName":"Android",#system"platformVersion":"8.0.0",#systemnumber"deviceName":"m5s",#devicename"appPackage":"com.tencent.mm",#packagename"appActivity":".ui.LauncherUI",#app启动时的主要activity'unicodeKeyboard':True,#使用内置输入法'noReset':true#保留会话信息,可以避免重新登录}接下来我们看看如何获??取微信通讯录名字列表(备注)?代码实现如下:#获取通讯录列表defget_address_list():driver.find_elements_by_id('com.tencent.mm:id/cn_')[1].click()#获取昵称(备注)address_list=driver.find_elements_by_id('com.tencent.mm:id/dy5')remarks=[]foraddressinaddress_list:remark=address.get_attribute("content-desc")#排除自己和微信公众号ifremark!="OwnWeChatname"和"WeChat"notinremark:remarks.append(remark)returnremarks获取到微信通讯录列表后,我们可以遍历检测。下面看看如何检测我们的微信是否被删除。代码实现如下:#判断是否删除defis_delete(remark,count):ifcount=="1":time.sleep(2)print('点击微信搜索框')driver.find_element_by_id('知乎.mm:id/cn1').click()time.sleep(2)print('在搜索框中输入搜索信息')driver.find_element_by_id('com.tencent.mm:id/bhn').send_keys(remark)time.sleep(2)print('点击搜索到的好友')driver.find_element_by_id('com.tencent.mm:id/tm').click()time.sleep(2)#调用driver.find_element_by_id('com.tencent.mm:id/aks').click()time.sleep(2)driver.find_elements_by_id('com.tencent.mm:id/pa')[5].click()time.sleep(2)driver.find_element_by_id('com.tencent.mm:id/cx_').click()time.sleep(2)driver.find_element_by_id('com.tencent.mm:id/cxi').click()time.sleep(5)#判断是否删除is_exist=is_element_exist('com.tencent.mm:id/jh')ifis_exist为True:returnremarkelse:returnFalse上述方法中,如果检测到删除他的人微信会返回那个人的微信名(备注),然后我们记录这些人;如果检测到删他微信的人不是删他微信的人,返回False以上过程完成后,我们就可以得到所有删除了我们微信的人,然后我们就可以将这些人从我们的微信通讯录中删除了。删除代码如下:#Deletedeleteyourselfpersondefdel_person(nicks):forinx,valinenumerate(nicks):time.sleep(2)ifinx==0:print('在搜索中输入搜索信息box')driver.find_element_by_id('com.tencent.mm:id/bhn').send_keys(val)else:time.sleep(2)print('点击微信搜索框')driver.find_element_by_id('com.tencent.mm:id/cn1').click()print('在搜索框中输入搜索信息')time.sleep(1)driver.find_element_by_id('com.tencent.mm:id/bhn').send_keys(val)time.sleep(2)print('点击搜索到的人')driver.find_element_by_id('com.tencent.mm:id/tm').click()time.sleep(2)print('点击右上角聊天对话框的...')driver.find_element_by_id('com.tencent.mm:id/cj').click()time.sleep(2)print('点击头像')driver.find_element_by_id('com.tencent.mm:id/f3y').click()time.sleep(2)print('点击联系人右上角...')driver.find_elelement_by_id('com.tencent.mm:id/cj').click()time.sleep(2)print('点击删除按钮')driver.find_element_by_id('com.tencent.mm:id/g6f').click()time.sleep(2)print('点击弹出框删除')driver.find_element_by_id('com.tencent.mm:id/doz').click()至此,我们就实现了自动化使用Python+Appium找出微信中删除自己的人,并删除。源码可在公众号Python小二后台回复201108获取。
