由于要以微信作一个某学习网站的登陆途径,用小程序就又有一些额外的花费,所以想以微信聊天窗口做些文章,就在网上找了很多关于微信机器人的方法,大多数都是用的老旧并且已经失效的wxpy,没办法了,放弃吗?

成都创新互联公司专业为企业提供五指山网站建设、五指山做网站、五指山网站设计、五指山网站制作等企业网站建设、网页设计与制作、五指山企业网站模板建站服务,10余年五指山做网站经验,不只是建网站,更提供有价值的思路和整体网络服务。
整体思路:利用自动化测试库达到预期效果。
运行环境:PyCharm Python
码字流程
[[350139]]
获取微信的PID
这里用到了psutil库,大概意思是获取所有的进程,遍历挑选出微信的进程ID
- #!/usr/bin/env python
 - # -*- coding:utf-8 -*-
 - # Author:smart_num_1
 - # Blog:https://blog.csdn.net/smart_num_1
 - from psutil import process_iter
 - def get_pid():
 - PID = process_iter()
 - name = ''
 - pid_num = 0
 - for pid_temp in PID:
 - pid_dic = pid_temp.as_dict(attrs = ['pid','name'])
 - if pid_dic ['name'] == 'WeChat.exe':
 - name = pid_dic ['name']
 - pid_num = pid_dic ['pid']
 - break
 - if name =='WeChat.exe':
 - return pid_num
 - else :
 - return False
 
连接到微信
- # 创建一个实例对象,Pywinauto中backend有两种:win32和uia,默认为win32。可使用spy++和Inspect工具判断backend适合写哪种。在这里微信为'uia'
 - self.app = Application(backend = 'uia')
 - # 将 app 连接到已经登陆成功的微信,这里可以用进程ID、句柄、以及程序路径进行连接,此处采用PID
 - self.app.connect(process = PID )
 - # 定位到微信窗口
 - self.win = app[u'微信']
 
微信的一些基本功能
获取用户发来的消息
- def get_text(self):
 - data = ''
 - try:
 - data = self.win.Edit2.get_value()
 - with open('./temporary_text','w',encoding = 'utf-8') as f:
 - f.write(data)
 - except:
 - pass
 - return data #line:4
 
获取聊天信息用户
- def get_users(self):
 - user_lis = []
 - try:
 - # 定位到信息列表,获取这个对象
 - conunacation = self.win.child_window(title = "会话",control_type = "List")
 - # 定位到这个位置
 - position = conunacation.rectangle()
 - mouse.click(button = 'left',coords = (position.left + 100 ,position.top + 10 ))
 - # 定位到列表的位置,取他的子控件,至于为何,列表是一个总的容器,而每个用户都存在这个容器中,固取子控件
 - users = conunacation.children()
 - for user in users:
 - user_lis.append(user.window_text())
 - except:
 - pass
 - return user_lis
 
在聊天界面找到某个用户
- def find_user (self ,user = ''):
 - # 找到指定名称用户的按钮
 - user = self.win.child_window(title = user, control_type = 'Text')
 - # 定位到该按钮,获取它的相对位置
 - position = user .rectangle()
 - # 模拟点击,coords 是点击的位置
 - mouse.click (button = 'left',coords = (position.left ,position.top))
 - sleep(0.3)
 
搜索某个用户
- def search_ueser (self ,user_name = ''):
 - # 找控件的方法如上个函数中介绍,此处不再继续介绍
 - search = self.win.child_window(title = "搜索", 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}')
 
向某个用户发送文本信息
- def send_message (self ,texts =''):#line:64
 - for text in texts .split ('\n'):#line:65
 - # 这里用到了另外的一个库,因为用pywinauto 自带的输入模块,表情,空格等是自动略过或者识别不出,达不到按原有缩进样式缩进的效果
 - if text.isalnum():
 - copy(text.strip())
 - hotkey ('ctrl', 'v')
 - else:
 - self.win.type_keys(text)
 - sleep(0.1)
 - hotkey ('ctrl', 'enter')#line:67
 - hotkey ('enter')#line:68
 
删除某个用户
- def delete_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
                网站题目:利用Python制作属于自己的微信小客服
                
                文章位置:http://www.csdahua.cn/qtweb/news18/507718.html
            
网站建设、网络推广公司-快上网,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 快上网