昨天刷B站看见了个微信自动回复小程序视频作者是不高兴就喝水视频在这看着感觉挺有意思的我也搞个敷衍我女朋友。
安装python3.4以上版本,并配置环境变量!!!
1.安装依赖包
方法:在cmd中(win+R 输入cmd 回车)输入
pip install pyperclip 回车
pip install xlrd 回车
pip install pyautogui==0.9.50 回车
pip install opencv-python -i https://pypi.tuna.tsinghua.edu.cn/simple 回车
pip install pillow 回车
这几步如果哪步没成功,请自行百度 如 pip install opencv-python失败
差不多大概就是这样。如果不行的话看这个文章,这个文章有答案我就从这搞好的
2.还要搞一个Excel 把每一步要操作的图标、区域截图保存至本文件夹 png格式
在Excel 的sheet1 中,配置每一步的指令,如指令类型1234 对应的内容填截图文件名(别用中文),指令5对应的内容是等待时长(单位秒) 指令6对应的内容是滚轮滚动的距离,正数表示向上滚,负数表示向下滚,数字大一点,先用200和-200试试,然后保存文件就行了。
import pyautogui
import time
import xlrd
import pyperclip#定义鼠标事件#pyautogui库其他用法 https://blog.csdn.net/qingfengxd1/article/details/108270159def mouseClick(clickTimes,lOrR,img,reTry):if reTry == 1:while True:location=pyautogui.locateCenterOnScreen(img,confidence=0.9)if location is not None:pyautogui.click(location.x,location.y,clicks=clickTimes,interval=0.2,duration=0.2,button=lOrR)breakprint("未找到匹配图片,0.1秒后重试")time.sleep(0.1)elif reTry == -1:while True:location=pyautogui.locateCenterOnScreen(img,confidence=0.9)if location is not None:pyautogui.click(location.x,location.y,clicks=clickTimes,interval=0.2,duration=0.2,button=lOrR)time.sleep(0.1)elif reTry > 1:i = 1while i < reTry + 1:location=pyautogui.locateCenterOnScreen(img,confidence=0.9)if location is not None:pyautogui.click(location.x,location.y,clicks=clickTimes,interval=0.2,duration=0.2,button=lOrR)print("重复")i += 1time.sleep(0.1)# 数据检查
# cmdType.value 1.0 左键单击 2.0 左键双击 3.0 右键单击 4.0 输入 5.0 等待 6.0 滚轮
# ctype 空:0
# 字符串:1
# 数字:2
# 日期:3
# 布尔:4
# error:5
def dataCheck(sheet1):checkCmd = True#行数检查if sheet1.nrows<2:print("没数据啊哥")checkCmd = False#每行数据检查i = 1while i < sheet1.nrows:# 第1列 操作类型检查cmdType = sheet1.row(i)[0]if cmdType.ctype != 2 or (cmdType.value != 1.0 and cmdType.value != 2.0 and cmdType.value != 3.0 and cmdType.value != 4.0 and cmdType.value != 5.0 and cmdType.value != 6.0):print('第',i+1,"行,第1列数据有毛病")checkCmd = False# 第2列 内容检查cmdValue = sheet1.row(i)[1]# 读图点击类型指令,内容必须为字符串类型if cmdType.value ==1.0 or cmdType.value == 2.0 or cmdType.value == 3.0:if cmdValue.ctype != 1:print('第',i+1,"行,第2列数据有毛病")checkCmd = False# 输入类型,内容不能为空if cmdType.value == 4.0:if cmdValue.ctype == 0:print('第',i+1,"行,第2列数据有毛病")checkCmd = False# 等待类型,内容必须为数字if cmdType.value == 5.0:if cmdValue.ctype != 2:print('第',i+1,"行,第2列数据有毛病")checkCmd = False# 滚轮事件,内容必须为数字if cmdType.value == 6.0:if cmdValue.ctype != 2:print('第',i+1,"行,第2列数据有毛病")checkCmd = Falsei += 1return checkCmd#任务
def mainWork(img):i = 1while i < sheet1.nrows:#取本行指令的操作类型cmdType = sheet1.row(i)[0]if cmdType.value == 1.0:#取图片名称img = sheet1.row(i)[1].valuereTry = 1if sheet1.row(i)[2].ctype == 2 and sheet1.row(i)[2].value != 0:reTry = sheet1.row(i)[2].valuemouseClick(1,"left",img,reTry)print("单击左键",img)#2代表双击左键elif cmdType.value == 2.0:#取图片名称img = sheet1.row(i)[1].value#取重试次数reTry = 1if sheet1.row(i)[2].ctype == 2 and sheet1.row(i)[2].value != 0:reTry = sheet1.row(i)[2].valuemouseClick(2,"left",img,reTry)print("双击左键",img)#3代表右键elif cmdType.value == 3.0:#取图片名称img = sheet1.row(i)[1].value#取重试次数reTry = 1if sheet1.row(i)[2].ctype == 2 and sheet1.row(i)[2].value != 0:reTry = sheet1.row(i)[2].valuemouseClick(1,"right",img,reTry)print("右键",img) #4代表输入elif cmdType.value == 4.0:inputValue = sheet1.row(i)[1].valuepyperclip.copy(inputValue)pyautogui.hotkey('ctrl','v')time.sleep(0.5)print("输入:",inputValue) #5代表等待elif cmdType.value == 5.0:#取图片名称waitTime = sheet1.row(i)[1].valuetime.sleep(waitTime)print("等待",waitTime,"秒")#6代表滚轮elif cmdType.value == 6.0:#取图片名称scroll = sheet1.row(i)[1].valuepyautogui.scroll(int(scroll))print("滚轮滑动",int(scroll),"距离") i += 1if __name__ == '__main__':file = 'cmd.xls'#打开文件wb = xlrd.open_workbook(filename=file)#通过索引获取表格sheet页sheet1 = wb.sheet_by_index(0)print('欢迎使用不高兴就喝水RPA~')#数据检查checkCmd = dataCheck(sheet1)if checkCmd:key=input('选择功能: 1.做一次 2.循环到死 \n')if key=='1':#循环拿出每一行指令mainWork(sheet1)elif key=='2':while True:mainWork(sheet1)time.sleep(0.1)print("等待0.1秒") else:print('输入有误或者已经退出!')
- 打开程序,按1表示excel中的指令执行一次,按2表示无限重复执行直到程序关闭。
出现这样子就代表程序可以运行了
开始程序后请将程序框最小化,不然程序框挡住的区域是无法识别和操作的如果程序开始后因为你选择了无限重复而鼠标被占用停不下来,alt+F4就OK了。
如何报错不能运行可以看这个文章里面有解决方法!!!
OK了本期文章就到这里了喜欢的小伙伴点点免费的赞吧,明天国庆节了祝大家国庆节快乐!!!