使用Python+Appuim 清理微信的方法


Posted in Python onJanuary 26, 2021

使用 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 启动后截图

使用Python+Appuim 清理微信的方法

点击红框中按钮,将上面的参数填上,点击 start Session

使用Python+Appuim 清理微信的方法

启动后点击刷新按钮,看到的界面和真机上一样了,在真机上点击通讯录按钮并刷新界面

使用Python+Appuim 清理微信的方法

在 appium 界面点击一个好友,可以看到这个好友有一个 content-desc 和 resource-id 代表了昵称和资源 id

使用Python+Appuim 清理微信的方法

然后我们用 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+Appuim 清理微信的方法

下面四步骤就是用 Python 模拟微信转账操作

  1. 按上面获取的昵称搜索得到好友
  2. 在好友对话框中点击 + 号,获取到转账按钮
  3. 在转账界面输入 1 元,点击转账按钮,得到是否为好友结果
  4. 最后返回到搜索页面清空搜索框内容
# 判断是否被删
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()

总结

到此这篇关于使用Python+Appuim 清理微信的文章就介绍到这了,更多相关Python Appuim 清理微信内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
使用Python构建Hopfield网络的教程
Apr 14 Python
在Python的Flask框架中使用日期和时间的教程
Apr 21 Python
简单介绍Python的Django框架的dj-scaffold项目
May 30 Python
python使用matplotlib绘制柱状图教程
Feb 08 Python
Python正则表达式常用函数总结
Jun 24 Python
学习Python3 Dlib19.7进行人脸面部识别
Jan 24 Python
Jupyter安装nbextensions,启动提示没有nbextensions库
Apr 23 Python
Python Json模块中dumps、loads、dump、load函数介绍
May 15 Python
python中多个装饰器的调用顺序详解
Jul 16 Python
Python 闭包,函数分隔作用域,nonlocal声明非局部变量操作示例
Oct 14 Python
pygame实现俄罗斯方块游戏(对战篇1)
Oct 29 Python
Python bisect模块原理及常见实例
Jun 17 Python
详解使用python爬取抖音app视频(appium可以操控手机)
Jan 26 #Python
python Matplotlib基础--如何添加文本和标注
Jan 26 #Python
python如何用matplotlib创建三维图表
Jan 26 #Python
python软件测试Jmeter性能测试JDBC Request(结合数据库)的使用详解
Jan 26 #Python
Python数据模型与Python对象模型的相关总结
Jan 26 #Python
使用豆瓣源来安装python中的第三方库方法
Jan 26 #Python
详解用selenium来下载小姐姐图片并保存
Jan 26 #Python
You might like
eaglephp使用微信api接口开发微信框架
2014/01/09 PHP
学习php设计模式 php实现状态模式
2015/12/07 PHP
PHP获取数据库表中的数据插入新的表再原删除数据方法
2018/10/12 PHP
用js自动判断浏览器分辨率的代码
2007/01/28 Javascript
JQuery 引发两次$(document.ready)事件
2010/01/15 Javascript
CutePsWheel javascript libary 控制输入文本框为可使用滚轮控制的js库
2010/02/07 Javascript
JavaScript中instanceof与typeof运算符的用法及区别详细解析
2013/11/19 Javascript
基于jQuery实现下拉框
2014/11/24 Javascript
jQuery滚动加载图片实现原理
2015/12/14 Javascript
jquery中object对象循环遍历的方法
2015/12/18 Javascript
理解JavaScript原型链
2016/10/25 Javascript
jQuery监听浏览器窗口大小的变化实例
2017/02/07 Javascript
微信小程序之蓝牙的链接
2017/09/26 Javascript
webpack 4.0.0-beta.0版本新特性介绍
2018/02/10 Javascript
在vue项目中正确使用iconfont的方法
2018/09/28 Javascript
vue+VeeValidate 校验范围实例详解(部分校验,全部校验)
2018/10/19 Javascript
python编程实现归并排序
2017/04/14 Python
python中is与双等于号“==”的区别示例详解
2017/11/21 Python
python发送多人邮件没有展示收件人问题的解决方法
2019/06/21 Python
python tkinter图形界面代码统计工具(更新)
2019/09/18 Python
python实现身份证实名认证的方法实例
2019/11/08 Python
python中p-value的实现方式
2019/12/16 Python
使用Python防止SQL注入攻击的实现示例
2020/05/21 Python
基于python实现判断字符串是否数字算法
2020/07/10 Python
绢花、人造花和人造花卉:BLOOM
2019/08/07 全球购物
求职信内容考虑哪几点
2013/10/05 职场文书
会议邀请函范文
2014/01/09 职场文书
企业管理培训感言
2014/01/27 职场文书
《动手做做看》教学反思
2014/04/09 职场文书
2014年教师节演讲稿
2014/09/03 职场文书
企业总经理助理岗位职责
2014/09/12 职场文书
教师工作态度自我评价
2015/03/05 职场文书
2015年业务员工作总结范文
2015/04/07 职场文书
客户经理岗位职责大全
2015/04/09 职场文书
如何书写先进事迹材料?
2019/07/02 职场文书
JavaScript canvas实现流星特效
2021/05/20 Javascript