栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

python clicknium 微信发送消息以及获取好友列表

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

python clicknium 微信发送消息以及获取好友列表

需求说明
  1. 给指定微信好友发消息
  2. 获取所有微信好友的微信号
环境准备

Windows 10
Visual Studio Code 1.69.2
Clicknium 0.1.2
Python 3.10.5
微信 3.7.5.23

运行示例
  • 参照clicknium getting started 设置开发环境
  • 克隆示例代码
  • 在Visual Studio Code打开WechatSearch文件夹
  • 在Visual Studio Code中打开sample.py文件
  • 按“F5”调试或者按“Ctrl+F5”运行代码
思路方案 1. 发送消息
  1. 点击微信侧边栏通讯录
  2. 点击搜索框
  3. 点击搜索结果第一条
  4. 输入框输入消息
  5. 点击发送按钮
2. 获取好友列表微信号

需要解决:怎么获取所有微信好友,因为好友列表需要鼠标滚动才能逐步显示完全,但是通过鼠标滚动的话,又存在一个问题,每次滚动显示好友列表数量不好控制?这时候可以利用先选中好友列表第一个,然后按键盘上 Down 键,就可以发现按一次,好友列表下移一次

  1. 点击微信侧边栏通讯录
  2. 点击好友列表第一个
  3. 开始循环发送快捷键{DOWN}
  4. 获取当前选中微信好友微信号

    通过Recorder 我们可以很轻松定位到微信号,但是怎么获取相邻元素显示微信号呢?这时候可以通过 ui(locator.wechat.contact_id).parent.child(1).get_text()方式获取,逻辑就是定位到微信号元素后,再通过代码获取父一级元素即可;

  5. 判断当前选中是微信群还是企业微信号

    通过录制判断,我们可以发现只有微信好友才会显示微信号,所以通过这个特征来区分

  6. 判断下移好友列表到底

    通过记录上一次微信和当前选中微信号,如果上一次微信号和当前微信号一致,就可以判断可以结束流程

知识准备

Clicknium 提供非常棒录制器方式和 Locator 理念,可以帮助你无需关注太多细节,非常轻松完成流程开发,所以有必要了解下。

  1. Locator
  2. Recorder
    涉及到函数:
  3. click
  4. set_text
  5. is_existing
  6. send_hotkey
开始行动
  1. 创建项目,新建文件夹,打开 Visual Studio Code,按下Ctrl+Shift+P快捷键,选择Clicknium: Create Project),并且选择刚才新建文件即可;
  2. 打开 app.py 脚本文件,按照上述思路方案;发送消息
    def send_message(user, message):
        ui(locator.wechat.contact_button).click()
        ui(locator.wechat.search_user).set_text(
            user, InputTextBy.SendKeyAfterClick)
        ui(locator.wechat.search_result).click()
        ui(locator.wechat.message_input).set_text(
            message, InputTextBy.SendKeyAfterClick)
        ui(locator.wechat.message_send_button).click()
    
    获取好友列表
def get_contacts():
    ui(locator.wechat.contact_button).click()
    cc.find_element(locator.wechat.listitem_new_contact).click(
        mouse_button="left")
    preContactId = ''
    while True:
        cc.send_hotkey("{DOWN}")
        isContact = cc.is_existing(locator.wechat.contact_id)
        if isContact:
            curContactId = ui(
                locator.wechat.contact_id).parent.child(1).get_text()
            if curContactId == preContactId:
                break
            print('PreUserName:'+preContactId+' CurContactId:'+curContactId)
            preContactId = curContactId
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1025208.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号