赞
踩
这篇文章主要是总结最近写自动发送微信消息的python代码时所接触的两个库——pyautogui和pyperclip的用法。
在网上找了很多能实现发送微信消息的方法,其中有使用itchat和wxpy库来实现的,尝试过后发现这两个库都需要通过登录网页微信才能发送,但现在微信几乎都不能登录网页版;后来发现了pyautogui库,这是一个能操控鼠标和键盘的库,所以我就使用了pyautogui库在微信客户端实现消息发送。由于pyautogui库只能键入英文,所以需要与pyperclip搭配使用,可解决中文输入问题,pyperclip充当了剪贴板功能。
pyautogui.FAILSAFE=False
#是否启用自动防故障功能,默认这项功能为True,当鼠标指针在屏幕最左上方时程序报错!
pyautogui.PAUSE=1
#意味着所有的pyautogui指令都要停顿1秒;可以防止键盘鼠标操作太快
#获取屏幕大小 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.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交流学习
多多交流问题,互帮互助,这里有不错的学习教程和开发工具。
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家自动化/article/detail/70618
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。