【UI自动化】微信群聊未添加人数统计

 

博客首页:knighthood2001

欢迎点赞评论️

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

给大家推荐一款很火爆的刷题、面试求职网站

每日刷题,跟我一起来巩固基础和刷题吧

目的:本来想写个小学、初中、高中、大学中班群中未添加好友的统计,目前就先把最近写的分享出来,方便一起学习、交流!

步骤:

import subprocess
import uiautomation as auto
import time
# ToDo 这里需要更改微信所在地址,可通过桌面微信图标右键打开文件所在的位置查找到路径
subprocess.Popen('E:\微信\WeChat\WeChat.exe')

wechatWindow = auto.WindowControl(Name='微信', className="WeChatMainWndForPC")

        首先是导入相应的模块,如uiautomation和subprocess,然后使用

subprocess.Popen()

        打开微信(注意是登录状态),接着定义微信窗格对象,使用inspect.exe即可轻松搞定。

# 获取微信窗格的宽和高
w = wechatWindow.BoundingRectangle.width()
h = wechatWindow.BoundingRectangle.height()
# 将微信移到左上角,方便后续操作
wechatWindow.MoveWindow(0, 0, w, h)

        这里尽量将微信移到左上角,因为后续点击微信用户时候,需要右击,这样可以防止出错(不信的人可以去试试) 

        接下来定义聊天信息和聊天成员的窗格对象。 

b = wechatWindow.ButtonControl(Name='聊天信息')
b.Click()
b1 = wechatWindow.ListControl(Name='聊天成员')
b2 = wechatWindow.ButtonControl(Name='查看更多')
if b2.Exists():
    b2.Click()

【UI自动化】微信群聊未添加人数统计_第1张图片

# 选框底部
rect_btm = b1.GetParentControl().BoundingRectangle.bottom

选框如下图 

【UI自动化】微信群聊未添加人数统计_第2张图片

# 定位具体群成员
specific_mem = b1.GetChildren()

重点:

num = 0
for member in specific_mem:
    if not b1.Exists(0, 0):
        break
    if member.Name == '添加' or member.Name == '删除':
        continue
    if member.BoundingRectangle.bottom > rect_btm:
        auto.WheelDown(waitTime=0.01)
    member.Click(15, 15)
    # 主要是判断“添加到通讯录”按钮是否存在来判断是否添加好友
    mail = wechatWindow.ButtonControl(Name="添加到通讯录")
    if mail.Exists(0, 0):
        num += 1
        print(member.Name)
    member.RightClick(15, 15)
    if auto.IsKeyPressed(auto.Keys.VK_F4):
        break

print('未添加的成员个数:', num)
wechatWindow.MoveToCenter()

①首先定义num,用来计算未加好友的人数,

②Exists(0, 0)大致意思表示最快时间搜索

③对于群中的添加、删除按钮,我们pass即可

④对于显示不出的群成员,需要进行滚轮滚动,通过判断控件底部的位置高低,实行滚轮滚动。

⑤主要是判断“添加到通讯录”按钮是否存在来判断是否添加好友,该按钮存在,则计数。

【UI自动化】微信群聊未添加人数统计_第3张图片

我们判断好后,需要让该选框消失,我们可以点击鼠标右键或者点击头像右上角部分,这里笔者采用点击鼠标右键(弊端是不能用在自己创建的群)。

⑦最后打印,并将微信界面居中。

这样,我们就实现了一开头的目的。

你可能感兴趣的:(python,实用代码,自动化,uiautomation,python,微信)