使用Python+Appuim 清理微信的方法
作者:ztenv 发布时间:2021-05-24 12:22:05
标签:Python,Appuim,清理,微信
使用 Appium
安装一下 Python 用到的模块
pip install Appium-Python-Client
获取好友列表
在 Pycharm 中配置一下启动环境
desired_capabilities = {
'platformName': 'Android', # 操作系统
'deviceName': '2a254a02', # 设备 ID,使用 cmd 中 adb devices 命令得到
'platformVersion': '10.0.10', # 设备版本号,在手机设置中查看
'appPackage': 'com.tencent.mm', # app 包名
'appActivity': 'com.tencent.mm.ui.LauncherUI', # app 启动时主 Activity
'noReset': True # 是否保留 session 信息 避免重新登录
}
driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_capabilities)
print('微信启动')
下图是 appium 启动后截图
点击红框中按钮,将上面的参数填上,点击 start Session
启动后点击刷新按钮,看到的界面和真机上一样了,在真机上点击通讯录按钮并刷新界面
在 appium 界面点击一个好友,可以看到这个好友有一个 content-desc 和 resource-id 代表了昵称和资源 id
然后我们用 Python 获取所有的好友昵称
# 所有好友
friends = []
def get_friends():
# 好友id
address_list = driver.find_elements_by_id('com.tencent.mm:id/dy5')
for address in address_list:
# 昵称
friend = address.get_attribute('content-desc')
# 过滤掉自己、微信团队、文件夹传输助手
if friend != '某某白米饭' and friend != '微信团队' and friend != '文件夹传输助手':
friends.append(friend)
# 获取到最后一个好友返回
if friend == '🔥Jiuki🔥':
return
# 向上滚动获取好友,获取好友会重复,最后结果需过滤
driver.swipe(100, 1000, 100, 500)
# 递归循环得到所有好友
get_friends()
得到被对方删除的好友
在微信中被对方删除后,是不能进行转账的,这也是用来判断被对方删除的依据
下面四步骤就是用 Python 模拟微信转账操作
按上面获取的昵称搜索得到好友
在好友对话框中点击 + 号,获取到转账按钮
在转账界面输入 1 元,点击转账按钮,得到是否为好友结果
最后返回到搜索页面清空搜索框内容
# 判断是否被删
def is_del(f):
time.sleep(2)
driver.find_element_by_id('com.tencent.mm:id/cn1').click()
time.sleep(2)
# 在搜索框输入搜索信息
driver.find_element_by_id('com.tencent.mm:id/bhn').send_keys(f)
time.sleep(2)
#点击好友
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)
# 数字 1
driver.find_element_by_id('com.tencent.mm:id/cx_').click()
time.sleep(1)
# 付款界面转账按钮
driver.find_element_by_id('com.tencent.mm:id/cxi').click()
time.sleep(2)
# 判断是否被删
is_exist = is_element('com.tencent.mm:id/dos')
if is_exist:
# 不能转账就点击确定按钮
driver.find_element_by_id('com.tencent.mm:id/doz').click()
time.sleep(2)
else:
# 可以转账就后退
driver.press_keycode(4)
# 后退到 搜索页面
driver.press_keycode(4)
driver.press_keycode(4)
driver.press_keycode(4)
driver.press_keycode(4)
# 清空文本框
driver.find_element_by_id('com.tencent.mm:id/bhn').send_keys('')
return f
def is_element(id):
flag = None
try:
driver.find_element_by_id(id)
flag = True
except NoSuchElementException:
flag = False
finally:
return flag
因为 appium 操作 APP 有延迟,所以在每个操作后延迟 2 秒
删除好友
在得到被删好友的联系人之后,用个步骤在 Python 中微信删除好友
在搜索框中用昵称搜索被删好友的联系人
进入对话界面后,点击界面右上角的...
点击好友头像
点击个人信息界面右上角的...
点击删除按钮
在选择框中点击删除
# 删除好友
def del_friend(friend):
time.sleep(2)
driver.find_element_by_id('com.tencent.mm:id/cn1').click()
time.sleep(2)
driver.find_element_by_id('com.tencent.mm:id/bhn').send_keys(friend)
time.sleep(2)
#点击好友
driver.find_element_by_id('com.tencent.mm:id/tm').click()
time.sleep(2)
# 右上角...
driver.find_element_by_id('com.tencent.mm:id/cj').click()
time.sleep(2)
# 头像
driver.find_element_by_id('com.tencent.mm:id/f3y').click()
time.sleep(2)
# 右上角...
driver.find_element_by_id('com.tencent.mm:id/cj').click()
time.sleep(2)
# 删除按钮
driver.find_element_by_id('com.tencent.mm:id/g6f').click()
time.sleep(2)
# 选中删除
driver.find_element_by_id('com.tencent.mm:id/doz').click()
总结
来源:https://blog.csdn.net/lianshaohua/article/details/113177127


猜你喜欢
- 一、函数list(1)定义:用打开的文件作为参数,把文件内的每一行内容作为一个元素(2)格式:list(文件)(3)例子:with open
- 最近因项目需要用ACCESS做数据库开发WEB项目看论坛上还许多人问及ACCESS被注入的安全问题许多人解决的方法仍然是用Replace替换
- QL Server事件探查器(Profiler)可以帮助数据库管理员跟踪SQL Server数据库所执行的特定事件,监视数据库的行为;并将这
- 本文实例为大家分享了python pygame实现五子棋双人联机的具体代码,供大家参考,具体内容如下同一局域网内,服务端开启时,另一机器将I
- 本文实例讲述了PHP实现的AES加密、解密封装类与用法。分享给大家供大家参考,具体如下:<?php/** * Class AES *
- 一般的django项目我都喜欢采用以下的文件结构,使用include的方式,实现从总的url分配给apps里面的urlExample:-pr
- zip函数接受任意多个(包括0个和1个)序列作为参数,返回一个tuple列表。具体意思不好用文字来表述,直接看示例:1.示例1:x = [1
- 当程序中包含多个线程时,CPU 不是一直被特定的线程霸占,而是轮流执行各个线程。那么,CPU 在轮换执行线程的过程中,即从创建到消亡的整个过
- 前言本文使用 cpu 版本的 tensorflow 2.4 ,选用 Keras Tuner 工具以 Fashion 数据集的分类任务为例,完
- 可以让我们将数据用表格的方式展示出来安装方式pip install PrettyTable测试是否安装成功使用方法与对比增加一条数据先简单的
- 目录sync.Cond 可以用来干什么?与 Sync.Mutex 的区别sync.Cond 使用场景sync.Condsync.Cond 有
- 一般写ASP PHP代码的朋友都估计是采用直接操作SQL的吧~ 看以下的代码 <% dim conn,rs&nbs
- 本文实例为大家分享了python绘制折线图和条形图的具体代码,供大家参考,具体内容如下最近开始写小论文啦,中间不免要作各种各样的图,学习后自
- IIf 函数 根据表达式的值,来返回两部分中的其中一个。语法IIf(expr, truepart, fal
- 今天来研究python中moviepy模块的用途近来有大量处理视频的需求,常会碰到一个问题是下载的视频音量过小,会需要将它调大声,虽然有在线
- 1. File->Setting 打开如下所示的对话框,可以在Editor->General->Font下设置
- 概述相信我们经常会遇到这样的场景:想要了解双十一天猫购买化妆品的人员中平均消费额度是多少(这可能有利于对商品价格区间的定位);或者不同年龄段
- 本文实例讲述了sql server实现递归查询的方法示例。分享给大家供大家参考,具体如下:有时候面对树结构的数据时需要进行递归查询,网上找了
- 触发器是一种特殊类型的存储过程,它不同于之前的我们介绍的存储过程。触发器主要是通过事件进行触发被自动调用执行的。而存储过程可以通过存储过程的
- SQL Server 的全文搜索(Full-Text Search)是基于分词的文本检索功能,依赖于全文索引。全文索引不同于传统的平衡树(B