python-桌面软件自动化(二) (实战 微信自动群发)

        从联系人列表中依次选取联系人,搜索联系人,若联系人不存在则跳过,发送消息可包含表情。
        当控件不存在,可通过try-except捕获ElementNotFoundError异常。
        我们可以利用这种已知的异常来做一些判断,比如我们搜索某个联系人,当这个联系人不在搜索结果中时,我们就可以中断后续的执行了。
        源码如下:

import time
from pywinauto import Application, ElementNotFoundError
import keyboard
import io
import win32gui
def 查找发送(窗口, 微信名, 信息):
    try:
        搜索 = 窗口.child_window(control_type='Edit', title='搜索')
        搜索.click_input()
        搜索.type_keys('^a').type_keys(微信名)
        time.sleep(2)
        搜索结果 = 微信窗口.child_window(control_type='List', title='@str:IDS_FAV_SEARCH_RESULT:3780')
        联系人项 = 搜索结果.child_window(control_type='ListItem', title=微信名,found_index=0)
        联系人项.click_input()
        消息输入框 = 微信窗口.child_window(control_type='Edit', title=微信名)
        消息输入框.click_input()
        消息输入框.type_keys('^a')
        for line in io.StringIO(信息):
            keyboard.write(line.strip())
            keyboard.send('ctrl+enter')
            发送 = 微信窗口.child_window(control_type='Button', title='发送(S)')
            发送.click_input()
    except ElementNotFoundError:
        print("控件未找到")
    except:
        raise
if __name__ == '__main__':
    # 根据应用程序窗口名获得句柄
    句柄 = win32gui.FindWindow(None, '微信')
    # 通过句柄连接已有微信进程
    微信主程序 = Application(backend='uia').connect(handle=句柄)
    # 拿到微信主窗口
    微信窗口 = 微信主程序.window(class_name='WeChatMainWndForPC')
    微信窗口.restore()

    联系人列表 = ['文件传输助手' , 'xxx']
    消息 = '\ue105哈哈哈实验不要回我消息\ue409'
    for 联系人 in 联系人列表:
        查找发送(微信窗口, 联系人, 消息)

 总结

本节课学习了控件的其他常用操作,再结合拓展的鼠标,键盘操作,一整套完整的桌面软件自动化的技术都涵盖在内了,相信实战中的微信自动群发会给同学们带来一些启发。在此恭喜大家完成了实战训练营二期的全部课程,感谢大家坚持到了最后,也感谢大家对老师的信任与陪伴。本次训练营的周期很长,课程涵盖的内容也非常广,大家学习起来会有疑惑和困顿,这都是正常的。但是不用担心,一个旧的结束代表着一个新的开始,训练营的课程是结束了,但是我们的学习之路才刚刚开始,老师永远欢迎你们!最后祝大家工作顺利,万事如意,财源滚滚!

课后习题

(编程题)开放性编程题,大家发散思维基于更多桌面软件写出自己想要的自动化功能。(欢迎大家将自己的思路与代码分享到知识星球中)

猜你喜欢

转载自blog.csdn.net/qiqi776532/article/details/142349824