这篇文章主要是总结最近写自动发送微信消息的python代码时所接触的两个库——pyautogui和pyperclip的用法。

在网上找了很多能实现发送微信消息的方法,其中有使用itchat和wxpy库来实现的,尝试过后发现这两个库都需要通过登录网页微信才能发送,但现在微信几乎都不能登录网页版;后来发现了pyautogui库,这是一个能操控鼠标和键盘的库,所以我就使用了pyautogui库在微信客户端实现消息发送。由于pyautogui库只能键入英文,所以需要与pyperclip搭配使用,可解决中文输入问题,pyperclip充当了剪贴板功能。

一.pyautogui库之前置参数

pyautogui.FAILSAFE=False   
#是否启用自动防故障功能,默认这项功能为True,当鼠标指针在屏幕最左上方时程序报错!

pyautogui.PAUSE=1
#意味着所有的pyautogui指令都要停顿1秒;可以防止键盘鼠标操作太快

二.pyautogui库之鼠标控制

#获取屏幕大小
width,height=pyautogui.size()

#获取鼠标的位置
pyautogui.position()

#鼠标移动
pyautogui.moveTo(x,y,duration=1)   #绝对移动:鼠标移动到(x,y)位置,移动过程持续时间为1秒
pyautogui.moveRel(xoffset,yoffset) #相对移动:相对当前位置向下移动xoffset,向右移动yoffset

#按住左键移动
pyautogui.dragTo(x,y)       #拖动鼠标到(x,y)位置
pyautogui.dragRel(xoffset,yoffset)   #相对当前位置拖动鼠标

#鼠标点击
pyautogui.mouseUp()  #松开鼠标
pyautogui.mouseDown()  #按下鼠标

pyautogui.click(x, y, clicks=1, interval=0.0, button='left/right/middle', duration=1)
#在(x,y)位置点击,clicks表示点击次数,interval表示单击间隔时间,button选择左键/右键/中键点击

pyautogui.rightClick()    #鼠标当前位置右键单击
pyautogui.doubleClick()   #鼠标在当前位置双击
pyautogui.doubleClick(x,y,button='left')  #鼠标在(x,y)位置双击
pyautogui.middleClick()   #鼠标在当前位置中键点击
pyautogui.tripleClick()   #鼠标在当前位置左击3下

pyautogui.click还有一个参数 tween指定缓动/渐变函数,用于改变光标移动过程中的速度和方向,
通常是匀速直线运动,即线性缓动/渐变函数。(pyautogui有30种缓动/渐变函数,可通过pyautogui.ease*?查看)


#鼠标滚动
pyautogui.scroll(10,x=11,y=15)  #鼠标移动到(x,y)位置时向上滚动10格,当为负数时向下滚动
pyautogui.scroll(10) #在当前位置鼠标滚动10格

三.pyautogui库之键盘控制

#输入字符串
pyautogui.typewrite("Hello World!")

#按下并松开某键
pyautogui.press("enter")

#按下和松开
pyautogui.keyDown("Shift")
pyautogui.keyUp("Shift")

#组合按键
pyautogui.hotkey('ctrl',"v")

#复制粘贴解决中文输入问题
pyperclip.copy("你好")
pyautogui.hotkey("ctrl","v")
四.pyautogui库的图像操作

#截全屏并设置保存图片的位置和名称
pyautogui.screenshot("要保存的路径")

#截取区域图片,region设置截取区域的左上角xy坐标值、宽度和高度(x,y,width,height)
pyautogui.screenshot("要保存的路径",region=(0,0,300,400))

#获取文件图片在当前屏幕上的坐标,返回一个元组(top,left,width,height)
a=pyautogui.locateOnScreen("图片文件路径")
x,y=pyautogui.center(a) #获取图片文件在当前屏幕上的中心坐标

x,y=pyautogui.locateCenterOnScreen("图片文件路径")

五.微信发送消息的代码

import pyautogui
import pyperclip
import os
import time
pyautogui.PAUSE=0.5
#在当前屏幕找到图片位置并点击
def mapping_img(img):
    image_l=pyautogui.locateOnScreen(img,grayscale=True)  #获取在当前屏幕的图片的位置
    if img=='微信搜索框.png':
        center=pyautogui.center(image_l)
        pyautogui.click(center) 
        pyautogui.click(center)  #这里是调试时发现搜索框点击一次点不上,又加了一行
    else:
        center=pyautogui.center(image_l)
        pyautogui.click(center)
        
 #在聊天搜索框输入昵称搜索聊天对象打开和他的对话框   
def chat_user(user):
    if user!='':
        pyperclip.copy(user)
        mapping_img('微信搜索框.png')
        pyautogui.hotkey('ctrl','v')
        #pyautogui.press('enter')
        time.sleep(1)
        pyautogui.moveRel(xOffset=0,yOffset=
80)
        pyautogui.click()
        time.sleep(2)
        
#点击微信窗口的上传文件按钮输入要发送的文件地址并打开,加载到待发送消息框
def readfile(filename):
    pyperclip.copy(filename)
    mapping_img('微信上传文件.png')  #点击微信窗口的“上传文件”按钮
    time.sleep(1)
    pyautogui.hotkey('ctrl','v')
    pyautogui.press('enter')
   
def main(): 
    os.chdir('C:\\Users\\Administrator\\微信图片') 
    #切换路径,微信搜索框和上传文件图片都在此路径
    for dirpath,dirnames,filenames in os.walk("C:\\Users\\Administrator\\Desktop\\总监区数据",topdown=False):
        for name in filenames:
            user_name=name.split("总监")[0]
            path1=os.path.join(dirpath,name)
            if user_name.find("+")!=-1:
                for i in range(user_name.count("+")):
                    user1=user_name.split("+")[i]
                    chat_user(user1)
                    readfile(path1)
                    pyautogui.press('enter')
                    pyperclip.copy("这是程序测试发出的文件,不用理会")
                    pyautogui.hotkey('ctrl','v')
                    pyautogui.press('enter')
            else:
            	chat_user(user_name)
            	readfile(path1)
            	pyautogui.press('enter')
            	pyperclip.copy("这是程序测试发出的文件,不用理会")
            	pyautogui.hotkey('ctrl','v')
            	pyautogui.press('enter')
if __name__=='__main__':
    main()

最后

在学习python中有任何困难不懂的可以微信扫描下方CSDN官方认证二维码加入python交流学习
多多交流问题,互帮互助,这里有不错的学习教程和开发工具。

👉[[CSDN大礼包:《python安装包&全套学习资料》免费分享]]安全链接,放心点击

一、Python所有方向的学习路线

Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。
在这里插入图片描述

二、Python必备开发工具

在这里插入图片描述

四、Python视频合集

观看零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。
在这里插入图片描述

五、实战案例

光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。在这里插入图片描述

六、Python练习题

检查学习结果。
在这里插入图片描述

七、面试资料

我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。
在这里插入图片描述
在这里插入图片描述
最后,千万别辜负自己当时开始的一腔热血,一起变强大变优秀。

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐