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

Posted knighthood2001

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了uiautomation批量给微信好友/群聊发消息相关的知识,希望对你有一定的参考价值。

 🔝🔝🔝🔝🔝🔝🔝🔝🔝🔝🔝🔝

🥰 博客首页: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专栏,接下来更新的相关文章也会陆续放进专栏中,感谢各位支持👍👍👍

以上是关于uiautomation批量给微信好友/群聊发消息的主要内容,如果未能解决你的问题,请参考以下文章

微信小程序可以转发给微信好友了

Python下发送定时消息给微信好友

群发技术-使用python3给微信好友群发消息

群发技术-使用python3给微信好友群发消息

分享给微信好友和时间线时,两个标签都显示“微信”

微信里的小程序怎么转发别人