【uiautomation】获取微信好友名单,可指定标签 & 全部

# -*- coding: utf-8 -*-
# @Time    : 2022/12/6 9:37
# @Author  : Cocktail_py

import time
import uiautomation as auto

wx_window = auto.WindowControl(Name='微信', ClassName='WeChatMainWndForPC')


def get_friend_list(tag: str = None, num: int = 10) -> list:
    """
    获取微好友名称.

    Args:
        tag(str): 可选参数,如不指定,则获取所有好友
        num(int): 可选参数,如不指定,只获取10页好友

    Returns:
        list
    """

    def click_tag():
        """点击标签"""
        contacts_window.ButtonControl(Name="标签").Click()

    auto.SendKeys(text='{Alt}{Ctrl}w')  # 快捷键唤醒微信
    # 点击 通讯录管理
    wx_window.ButtonControl(Name="通讯录").Click()
    wx_window.ListControl(Name="联系人").ButtonControl(Name="通讯录管理").Click()
    contacts_window = auto.GetForegroundControl()  # 切换到通讯录管理,相当于切换到弹出来的页面

    if tag:
        click_tag()  # 点击标签
        contacts_window.PaneControl(Name=tag).Click()
        time.sleep(0.3)
        click_tag()  # 关闭标签

    # 获取滑动模式
    scroll = contacts_window.ListControl().GetScrollPattern()
    assert scroll, "没有可滑动对象"
    name_list = list()
    rate: int = int(float(102000 / num))  # 根据输入的num计算滑动的步长
    for pct in range(0, 102000, rate):  # range不支持float,不导入numpy库,采取迂回这的方式
        # 每次滑动一点点,-1代表不用滑动
        scroll.SetScrollPercent(horizontalPercent=-1, verticalPercent=pct / 100000)
        for name_node in contacts_window.ListControl().GetChildren():  # 获取当前页面的 列表 -> 子节点
            nick_name = name_node.TextControl().Name  # 用户名
            remark_name = name_node.ButtonControl(foundIndex=2).Name  # 用户备注名,索引1会错位,索引2是备注名,索引3是标签名
            name_list.append(remark_name if remark_name else nick_name)
    contacts_window.SendKey(auto.SpecialKeyNames['ESC'])  # 结束时候关闭 "通讯录管理" 窗口
    return list(set(name_list))  # 简单去重,但是存在误判(如果存在同名的好友

print(get_friend_list(tag="无标签", num = 2))

在这里插入图片描述

参考:https://frica.blog.youkuaiyun.com/article/details/126806657

Python结合UI Automation库(如Windows UI Automation或AutoIt)可以用于自动化Windows应用程序操作,例如在Windows上模拟鼠标点击、键盘输入等,以实现微信好友添加的功能。以下是基本步骤: 1. 安装必要的库:首先需要安装`pywinauto`库,它是一个用于控制Windows GUI应用的工具,可以方便地访问和操作Windows元素。 ```bash pip install pywinauto ``` 2. 导入并初始化:创建一个新的Python脚本,导入所需的模块,并设置目标窗口(微信聊天窗口或联系人列表)。 ```python from pywinauto.application import Application app = Application().start('weixin.exe') # 根据实际路径替换为微信的启动程序 ``` 3. 查找元素:定位到添加好友相关的按钮或菜单项。这通常涉及到查找特定的控件名称、文本、属性值或坐标位置。 ```python friends_button = app['FriendPanel'].ControlById('AddFriendButton') # 这里假设有个Add Friend的按钮ID ``` 4. 执行动作:模拟用户交互,比如点击添加好友按钮。 ```python friends_button.click() # 点击添加按钮 ``` 5. 输入好友信息:如果添加好友需要输入用户名或验证,可以找到相应的输入框进行填充。 ```python friend_input = app['SearchFriendEdit'] # 假设搜索栏的编辑框名是SearchFriendEdit friend_input.type_keys('朋友昵称') # 输入好友名字 ``` 6. 提交表单:确认添加,可能会有确认弹窗,此时需要处理这类事件。 请注意,实际操作可能因微信版本的不同而有所变化,某些功能可能被隐藏或者加密保护。此外,频繁的自动化操作可能违反微信的服务条款,因此在使用前务必确保了解相关规定。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值