博客首页:knighthood2001

系列专栏:uiautomation

欢迎点赞评论️

❤️ 热爱python,期待与大家一同进步成长!!❤️

        在平时生活中,我们可能会经常需要发一个文案(求捞捞)给微信许多联系人或发到群里,每次重复复制粘贴会显得特别麻烦,耐心逐渐下降。因此我们有时候还挺需要有能够批量给微信好友/群聊发消息的脚本

        根据以上需求,笔者采用python+uiautomation实现了以上批量给好友/群聊发消息的功能

目录

一、思路

二、所需模块

三、代码讲解     

        注意点1 

        注意点2 

四、总结 


一、思路

        首先登录微信,然后在搜索框中搜索微信好友/群聊,然后发消息,再重复以上操作。

二、所需模块

import subprocessimport uiautomation as auto
subprocess用于打开微信,uiautomation用于后续元素的定位,文字的输入等等

三、代码讲解     

首先定义一个a列表,里面存放的是你微信联系人备注/群聊名称,b表示要发送的内容 

# ToDo a表示联系人备注列表,b表示要发送的内容a = ['小号', '几何核心圈子', 'csdn-卷王集中营']b = '我真的没被盗号'

接下来登录微信,如果微信没登陆,就点击登录 

# ToDo 这里需要更改微信所在地址,可通过桌面微信图标右键打开文件所在的位置查找到路径subprocess.Popen('E:\微信\WeChat\WeChat.exe')# 判断微信是否已经登录(如果微信登陆了,以下代码可以省略,因为判断语句需要花时间去判断,会增加代码运行时间)wechat_login = auto.PaneControl(Name='微信')enter_wechat_btn = wechat_login.ButtonControl(Name='进入微信')if enter_wechat_btn.Exists():enter_wechat_btn.Click()

进入微信后,定位微信窗格元素

# 进入微信后wechatWindow = auto.WindowControl(searchDepth=1, className='WeChatMainWndForPC', Name='微信')# # 点击聊天(一般情况下可以不要)# button = wechatWindow.ButtonControl(Name='聊天')# button.Click()

        接下来就是最重要的环节了首先点击搜索框,输入a中的一个内容,然后在搜索结果中判断是否与遍历内容完全相等,如果完全相等,则点击。点击后就出现了具体聊天页面,然后在输入框中输入b,回车,这样就实现给一个联系人/群聊发消息的过程,要批量发消息,则加一个for循环就好了,这样就实现批量发送消息了。

代码如下

for i in a:# 搜索search = wechatWindow.EditControl(Name='搜索')search.Click()search.GetParentControl().GetChildren()[1].SendKeys(i)# 回车 只适用于搜索的是联系人,而不是群,因为群在下面# time.sleep(2)# wechatWindow.SendKeys('{Enter}')searResult = wechatWindow.ListControl(Name='搜索结果').GetChildren()for sear in searResult:# print(sear.Name)if sear.Name == i:sear.Click()break# 输入消息wechatWindow.EditControl(Name='输入').SendKeys(b)# 方法一:查找发送按钮并点击# sendBtn = wechatWindow.ButtonControl(Name='sendBtn')# sendBtn.Click()# 方法二:回车发送消息wechatWindow.SendKeys('{Enter}')# 记录一下消息给谁发送print(i, ' 消息已发送')

注意点1 

在搜索框输入要搜索的内容后,可以采用回车,不过该条件前提是搜索的是联系人,而不是群聊,因为搜索内容总是将联系人放在上面,群聊在联系人下面,而回车选择的就是搜索结果的第一个,这样就会出现错误,此外,如果要采用回车,需要设置时间,实现搜索内容输完后再回车,不然结果也会不同。因此这里笔者采用判断内容是否相等而不是采用回车

注意点2 

在输入具体要发送内容后,你可以采用点击发送按钮,也可以采用回车,区别就是回车方法更快 

四、总结 

        ①以上只是关于uiautomation自动化的一个比较实用的小案例,越到后来,越能发现uiautomation的强大,越能感受到写该模块的作者的伟大;

        ②接下来笔者还会更新uiautomation自动化的比较实用的代码与讲解,敬请期待❤️

        ③如果觉得笔者写uiautomaton自动化还行的话,可以收藏一下文章顶部的uiautomation专栏,接下来更新的相关文章也会陆续放进专栏中,感谢各位支持