1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152
| import pyautogui import time import xlrd import pyperclip
[[定义鼠标事件]] [[pyautogui库其他用法]] [https://blog.csdn.net/qingfengxd1/article/details/108270159](https://blog.csdn.net/qingfengxd1/article/details/108270159) def 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) break print("未找到匹配图片,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 = 1 while 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 += 1 time.sleep(0.1)
def dataCheck(sheet1): checkCmd = True [[行数检查]] if sheet1.nrows<2: print("没数据啊哥") checkCmd = False [[每行数据检查]] i = 1 while i < sheet1.nrows: 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 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 = False i += 1 return checkCmd [[任务]] def mainWork(img): i = 1 while i < sheet1.nrows: [[取本行指令的操作类型]] cmdType = sheet1.row(i)[0] if cmdType.value == 1.0: [[取图片名称]] img = sheet1.row(i)[1].value reTry = 1 if sheet1.row(i)[2].ctype == 2 and sheet1.row(i)[2].value != 0: reTry = sheet1.row(i)[2].value mouseClick(1,"left",img,reTry) print("单击左键",img) [[2代表双击左键]] elif cmdType.value == 2.0: [[取图片名称]] img = sheet1.row(i)[1].value [[取重试次数]] reTry = 1 if sheet1.row(i)[2].ctype == 2 and sheet1.row(i)[2].value != 0: reTry = sheet1.row(i)[2].value mouseClick(2,"left",img,reTry) print("双击左键",img) [[3代表右键]] elif cmdType.value == 3.0: [[取图片名称]] img = sheet1.row(i)[1].value [[取重试次数]] reTry = 1 if sheet1.row(i)[2].ctype == 2 and sheet1.row(i)[2].value != 0: reTry = sheet1.row(i)[2].value mouseClick(1,"right",img,reTry) print("右键",img) [[4代表输入]] elif cmdType.value == 4.0: inputValue = sheet1.row(i)[1].value pyperclip.copy(inputValue) pyautogui.hotkey('ctrl','v') time.sleep(0.5) print("输入:",inputValue) [[5代表等待]] elif cmdType.value == 5.0: [[取图片名称]] waitTime = sheet1.row(i)[1].value time.sleep(waitTime) print("等待",waitTime,"秒") [[6代表滚轮]] elif cmdType.value == 6.0: [[取图片名称]] scroll = sheet1.row(i)[1].value pyautogui.scroll(int(scroll)) print("滚轮滑动",int(scroll),"距离") i += 1 if __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('输入有误或者已经退出!')
|