由于微信作为某学习网站的登录通道,使用小程序会产生一些额外费用,所以想利用微信聊天窗口制作一些文章,所以我在网上找到了它。微信机器人的方法有很多,大部分都是陈旧无效的wxpy,没办法,放弃?总体思路:使用自动化测试库达到预期效果。运行环境:PyCharmPython码字处理获取微信PID连接微信一些基本功能获取用户消息获取聊天信息用户在聊天界面找到用户搜索用户给某个用户发短信删除一个某用户微信个人用户部分附加功能修改备注添加指定应用好友一键添加所有应用好友发送图片给指定用户接收超级用户指令并处理相关任务接收普通用户指令并回复相关内容一-点击删除所有好友通知超级用户断线断线自动重新登录连接其他界面,完成相关任务,收集信息,自动收款,判断金额并通知超级用户连接数据库,判断是否用户在使用该功能的期限内。会员转发信息将收藏中的内容发送给用户将本地文件发送给用户获取微信的PID这里使用了psutil库,大致意思就是获取所有的进程,遍历选择微信#的进程ID!/usr/bin/envpython#-*-coding:utf-8-*-#Author:smart_num_1#Blog:https://blog.csdn.net/smart_num_1frompsutilimportprocess_iterdefget_pid():PID=process_iter()name=''pid_num=0forpid_tempinPID:pid_dic=pid_temp.as_dict(attrs=['pid','name'])ifpid_dic['name']=='WeChat.exe':name=pid_dic['name']pid_num=pid_dic['pid']breakifname=='WeChat.exe':returnpid_numelse:returnFalse连接微信#创建一个实例对象,Pywinauto中有两个后端:win32和uia,默认是win32。您可以使用spy++和Inspect工具来确定哪个后端适合编写。这里微信是'uia'self.app=Application(backend='uia')#将app连接到登录成功的微信,这里可以使用进程ID,句柄,程序路径进行连接,这里使用PIDself.app.connect(process=PID)#定位到微信窗口self.win=app[u'WeChat']微信获取用户发送消息的一些基本函数defget_text(self):data=''try:data=self.win.Edit2.get_value()withopen('./temporary_text','w',encoding='utf-8')asf:f.write(data)except:passreturndata#line:4获取用户聊天信息defget_users(self):user_lis=[]try:#定位到信息列表,获取这个对象conunacation=self.win.child_window(title="Session",control_type="List")#定位到这个位置(button='left',coords=(position.left+100,position.top+10))#定位到列表的位置,取其子控件。至于为什么,列表是一个通用的容器,每个用户都存在这个容器中,子控件users=conunacation.children()foruserinusers:user_lis.append(user.window_text())except:passreturnuser_lis找到一个用户在聊天界面中deffind_user(self,user=''):#找到指定名称的用户的按钮user=self.win.child_window(title=user,control_type='Text')#找到按钮并获取其相对位置position=user.rectangle()#模拟点击,坐标被点击的位置mouse.click(button='left',coords=(position.left,position.top))sleep(0.3)searchforauserdefsearch_ueser(self,user_name=''):#查找控件的方法同上一个函数中介绍的,这里不再继续介绍。search=self.win.child_window(title="Search",control_type="Edit")position=search.rectangle()mouse.click(button='left',coords=(position.left+100,position.top+10))sleep(0.1)mouse.click(button='left',coords=(position.left+100,position.top+10))#包含模块,输入用户名self.win.type_keys(user_name)sleep(0.6)self.win.type_keys('{ENTER}')发送短信给用户defsend_message(self,texts=''):#line:64fortextintexts.split('\n'):#line:65#这里使用了另一个库,因为使用了pywinauto输入模块,表达式,空格等自动跳过或者无法识别,无法达到按照原来缩进样式缩进的效果iftext.isalnum():copy(text.strip())hotkey('ctrl','v')else:self.win.type_keys(text)sleep(0.1)hotkey('ctrl','enter')#line:67hotkey('enter')#行:68删除用户defdelete_user(self,user=''):user=self.win.child_window(title=user,control_type='Text')position=user.rectangle()mouse.click(button='right',coords=(position.left-40,position.top))#点击这里会弹出一个菜单,直接点击菜单中的删除聊天选项self.app.Menu['删除聊天'].click_input('left')由于使用本程序,微信的一些附加功能涉及项目的一些敏感内容。详细描述所有这些功能并不方便。我只是简单地写一下已经实现的内容。如有需要相关想法,请联系微信:Be_a_luck_dog修改备注添加指定应用好友一键添加所有应用好友发送图片给指定用户接收超级用户指令,处理相关任务接收普通用户指令,回复相关内容其他接口,完成相关任务,收集信息,自动收款,判断金额并通知超级用户连接数据库,判断用户是否在使用该功能的期限内。一键通知好友信息。用户发送本地文件给用户的内容
