irpas技术客

【uiautomation】批量给微信好友/群聊发消息_knighthood2001_python uiautomation 微信

网络 6792

?🔝🔝🔝🔝🔝🔝🔝🔝🔝🔝🔝🔝

🥰 博客首页:knighthood2001

🌞 系列专栏:uiautomation

😗 欢迎点赞👍评论🗨?

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

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

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

目录

一、思路

二、所需模块

三、代码讲解? ? ?

????????注意点1?

????????注意点2?

四、总结?


一、思路

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

二、所需模块 import subprocess import 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专栏,接下来更新的相关文章也会陆续放进专栏中,感谢各位支持👍👍👍


1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,会注明原创字样,如未注明都非原创,如有侵权请联系删除!;3.作者投稿可能会经我们编辑修改或补充;4.本站不提供任何储存功能只提供收集或者投稿人的网盘链接。

标签: #Python #uiautomation #微信