首页
留言板
推荐
Allen知识库
Search
1
VMware vSphere系列教程-部署DC/DHCP/DNS(五)
21 阅读
2
最强链路监控系统推荐Pinpoint
21 阅读
3
PC新时代开启! DDR5内存标准正式发布
19 阅读
4
Ansible系列教程-常用模块(二)
13 阅读
5
将物理机迁移到VMware虚拟机(P2V)
13 阅读
VMware
vCloud
Horizon
vSphere
NSX
运维相关
Docker
Network
Zabbix
Ansible
Python
Microsoft
Mysql
Linux
Windows Server
登录
/
注册
Search
标签搜索
ansible
docker
zabbix
chatgpt
windows模板
linux模板
模板
k3
lede
openwrt
docker网络配置
清理微信好友
python清理微信好友
grafana
监控交换机
实施教程
ansible安装
ubuntu
acrh17路由固件
访问宽带猫
Allen
累计撰写
134
篇文章
累计收到
0
条评论
首页
栏目
VMware
vCloud
Horizon
vSphere
NSX
运维相关
Docker
Network
Zabbix
Ansible
Python
Microsoft
Mysql
Linux
Windows Server
页面
留言板
推荐
Allen知识库
搜索到
2
篇与
的结果
2021-03-05
Python 自动化清理微信僵尸好友(二)
一、概述自从 微信网页版 被限制登陆之后wxpy库就基本没啥用了,但是还是有很多同学想学微信自动化,其实有些功能是可以用其他自动化库代替的,今天就给大家介绍一下如何使用 appium库 删除那些僵尸好友!随着微信的使用时间越长,微信好友也越来越多,有些好友将你删除了你也不知道。当我们发消息的时候会出现下面扎心的一幕,然后默默将他删除二、下载 Appium库这里使用最新 1.20.0 版本的 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()六、总结今天我们学习了如何使用 appium自动化清理了微信僵尸好友,其实appium是一个非常强大且操作简单的库,你完全可以用它去做更多的事情!猪哥之前就是用appium库做了微信搜索结果存储的程序,非常好用,下次有机会再为大家带来一些关于appium库的实践案例!本文源码:https://github.com/JustDoPython/python-examples/tree/master/moumoubaimifan/wxDelFriends
2021年03月05日
0 阅读
0 评论
0 点赞
2021-03-05
Python 自动化清理微信僵尸好友(一)
文章来源:Python 技术「ID: pythonall」一、概述从石器时代开始,原始人来已经开始学会制造并使用工具,以满足自己的生活所需,这也是人类和动物最本质的区别,人类懂得制造并使用工具而动物不会。21 世纪的现代社会更是如此,企业与企业之间是人才的竞争,而人的竞争力则严重依赖其会使用工具的多少以及熟练程度,毕竟古人有云:「君子生非异也,善假于物也」。软件测试作为软件发布前的最后一个环节,起着至关重要的作用。虽然在很多公司里相对于开发来讲,公司对测试岗都不太重视,但这绝对不能掩盖其地位的重要性,稍有疏漏,就可能给公司带来巨大的损失。纵观国内各公司大部分的测试工作依然都是手动完成的,这不仅是对人力资源的巨大浪费,同时还伴随着巨大的潜在风险。因为人有时候会犯错,而机器则不会。所以我们要尽可能的把可以自动化的操作交给机器去完成,从而解放我们的双手,去做一些更有意义的事情。二、什么是 AppiumAppium 是一个开源的移动端自动化框架,可用于测试原生应用,移动网页应用和混合型应用,且其是跨平台的,可用于 iOS 和 Android 操作系统。这也就意味着你可以针对不同的平台使用同一套 Api 来编写测试程序,以提高代码的服用行和可维护性。三、设计思想为了更好的应对千变万化的需求,Appium 没有和某一门具体的语言绑死,开发者可以使用自己最熟悉的任何语言来使用该框架。Appium 之所以这么灵活完全得益于其优秀的设计思路,该框架使用 client-server 的设计模式,只要 server 端可以收到 client 端发送过来的请求,那么 client 端用什么语言来实现其实意义已经不大了,无关紧要。这样的设计思想带来了巨大的好处,其一就是使框架可以做到支持多语言,其二则是可以把 server 端放在任何机器上,即使是云服务器上也完全没有问题。四、入门想必在程序圈儿的你肯定对 Hello World 不陌生,每当我们学习一个新的技术的时候基本都会写一个 Hello World 的 demo 来快速熟悉该技术,同样,今天我就带着大家做一个入门 Appium。首先我们把环境搭建起来,依次安装下列软件。Android Studio JDK Python 3.8 PyCharm 网易模拟器 Appium 桌面版之所以需要安装 Android Studio 完全是因为链接安卓模拟器调试 App 程序时会用到 Android SDK,而 Android Studio 附带了 Andoid SDK,固直接安装 Android Studio。另外我们选择 Appium 桌面版,是因为桌面版附带可视化操作界面,对新手比较友好。其中前四个大家可能都比较熟悉,自行安装即可。Appium 则需从 https://github.com/appium/appium-desktop/releases/tag/v1.18.3 下载对应的版本直接安装就可以了。安装完成后启动 Appium,Host 和 Port 默认即可,接着点击下面的配置按钮进入配置页,设置完成 Android Home 和 Java Home 后直接启动 Server 就可以了。 当看到如下界面时,恭喜你,Server 已经启动成功了。五、启动成功接下来,我们开始完善 client 端,其实就是代码而已,直接调用 Api 即可。因为我们是要通过 Appium 来操控模拟器上的 App,所以需要先将模拟器启动。命令行输入 adb devices 如果看到以下信息,则说明模拟器是正常的。接着就是编写 client 端代码了,from appium import webdriver desired_capabilities = { "platformName": "Android", # 操作系统 "deviceName": "emulator-5554", # 设备 ID "platformVersion": "6.0.1", # 设备版本号 "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('链接到安卓模拟器')有了以上信息之后,我们就可以通过程序直接链接到模拟器,然后自动启动微信 App 了。那么启动了微信 App 之后我们还可以做什么操作呢?基本上我们手动可以做的操作,程序都可以替我们完成。driver.find_element_by_id('com.tencent.mm:id/f8y').click() print('查找搜索按钮') time.sleep(3) driver.find_element_by_id('com.tencent.mm:id/bhn').send_keys('Python 技术') print('查找搜索输入框 & 写入搜索关键字') time.sleep(3) driver.find_element_by_id('com.tencent.mm:id/tm').click() print('点击 icon 图标') time.sleep(3) driver.find_element_by_id('com.tencent.mm:id/cj').click() print('点击右上角头像') time.sleep(3) driver.find_element_by_id('com.tencent.mm:id/a1u').click() print('点击第一篇文章')上面这一套代码做了什么操作呢,简言之就是通过搜索找到「Python 技术」公众号,然后再去到该公众号主页并且查看了第一篇文章。同时程序为了给 App 留出一点反应时间,我们在每次发送指令后均让程序休息 3 秒钟。细心的你可能发现了,上述代码主要涉及到三个 Api,find_element_by_id()、send_keys() 以及 click,看函数名也就知道是做什么的了。那么,我们怎么知道某个元素的 ID 呢?这时候就又要请出我们的桌面版 Appium 了。点击「启动成功」界面右上角的放大镜图标。之后将上述程序中的配置信息添加上去,最后点击「Start Session」按钮,不出意外的话你应该能看到微信启动界面了,就是那个地球。但是细心的你会发现,模拟器上的界面和 Appium 上的不一致,此时需要你刷新下 Appium 上的界面信息,点击下图中的刷新按钮就可以了。如果想获取某个元素的 ID,那么则先选中选择按钮,接着选中你想要获取 ID 的元素即可。六、总结今天我们学习了自动化神器 Appium,其实该框架不仅仅只是用来做测试,其用武之地可多着呢,比如定时给女票发微信提醒她「多喝热水」,哈哈哈,小伙伴们可以发挥自己的想象力做一些好玩的工具出来哦。
2021年03月05日
1 阅读
0 评论
0 点赞