立码软件做网站,系统官网网站模板下载安装,网站开发 平均工资,做电子元器件销售什么网站好一、程序样式展示
将程序与cmd.xls文件放在同一文件夹#xff0c;每一步的截图也放在当前文件夹 通过图片在屏幕上面进行比对#xff0c;找到点击处进行自动化操作 自动化rpa测试 二、核心点
1.Pyautoui模块#xff1a;主要针对图片进行定位pyautogui.locateCenterOnScree…一、程序样式展示
将程序与cmd.xls文件放在同一文件夹每一步的截图也放在当前文件夹 通过图片在屏幕上面进行比对找到点击处进行自动化操作 自动化rpa测试 二、核心点
1.Pyautoui模块主要针对图片进行定位pyautogui.locateCenterOnScreen()在屏幕上面找到该图片位置后进行pyautogui.click单击双击右键输入操作还有滑轮操作pyautogui.scroll组合按键按键操作pyautogui.press(‘enter’)pyautogui.hotkey()这里使用滑轮需要先点击到滑轮处然后进行滑动才行不然可能会失效。 def mouseClick(clickTimes,lOrR,img,reTry):if reTry 1:while True:locationpyautogui.locateCenterOnScreen(img,confidence0.9)if location is not None:pyautogui.click(location.x,location.y,clicksclickTimes,interval0.2,duration0.2,buttonlOrR)breakprint(未找到匹配图片,0.1秒后重试)time.sleep(0.1)elif reTry -1:while True:locationpyautogui.locateCenterOnScreen(img,confidence0.9)if location is not None:pyautogui.click(location.x,location.y,clicksclickTimes,interval0.2,duration0.2,buttonlOrR)time.sleep(0.1)elif reTry 1:i 1while i reTry 1:locationpyautogui.locateCenterOnScreen(img,confidence0.9)if location is not None:pyautogui.click(location.x,location.y,clicksclickTimes,interval0.2,duration0.2,buttonlOrR)print(重复)i 1time.sleep(0.1)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))# pywinauto.mouse.scroll((700,800),-1000)print(滚轮滑动,int(scroll),距离) elif cmdType.value 7.0:key sheet1.row(i)[1].value pyautogui.press(key)time.sleep(0.5) print(按下,key) elif cmdType.value 8.0:comkey sheet1.row(i)[1].value comkey comkey.split()pyautogui.hotkey(comkey[0],comkey[1])print(按下,comkey[0] ,,comkey[1] )i 1
2.读取excel文件进行数据验证针对字符类型以及数字范围进行限制
def dataCheck(sheet1):checkCmd True#行数检查if sheet1.nrows2: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 and cmdType.value ! 7.0 and cmdType.value ! 8.0):print(第,i1,行,第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(第,i1,行,第2列数据有毛病)checkCmd False# 输入类型内容不能为空if cmdType.value 4.0:if cmdValue.ctype 0:print(第,i1,行,第2列数据有毛病)checkCmd False# 等待类型内容必须为数字if cmdType.value 5.0:if cmdValue.ctype ! 2:print(第,i1,行,第2列数据有毛病)checkCmd False# 滚轮事件内容必须为数字if cmdType.value 6.0:if cmdValue.ctype ! 2:print(第,i1,行,第2列数据有毛病)checkCmd False#单独按键enterif cmdType.value 7.0:if cmdValue.ctype ! 1:print(第,i1,行,第2列数据有毛病)checkCmd False#组合键 ctrla ctrlc ctrlv.... if cmdType.value 8.0:if cmdValue.ctype 0:print(第,i1,行,第2列数据有毛病)checkCmd Falsei 1return checkCmd
三、完整代码
import pyautogui
import time
import xlrd
import pyperclip
import pywinauto.mouse#定义鼠标事件#pyautogui库其他用法 https://blog.csdn.net/qingfengxd1/article/details/108270159def mouseClick(clickTimes,lOrR,img,reTry):if reTry 1:while True:locationpyautogui.locateCenterOnScreen(img,confidence0.9)if location is not None:pyautogui.click(location.x,location.y,clicksclickTimes,interval0.2,duration0.2,buttonlOrR)breakprint(未找到匹配图片,0.1秒后重试)time.sleep(0.1)elif reTry -1:while True:locationpyautogui.locateCenterOnScreen(img,confidence0.9)if location is not None:pyautogui.click(location.x,location.y,clicksclickTimes,interval0.2,duration0.2,buttonlOrR)time.sleep(0.1)elif reTry 1:i 1while i reTry 1:locationpyautogui.locateCenterOnScreen(img,confidence0.9)if location is not None:pyautogui.click(location.x,location.y,clicksclickTimes,interval0.2,duration0.2,buttonlOrR)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
# error5
def dataCheck(sheet1):checkCmd True#行数检查if sheet1.nrows2: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 and cmdType.value ! 7.0 and cmdType.value ! 8.0):print(第,i1,行,第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(第,i1,行,第2列数据有毛病)checkCmd False# 输入类型内容不能为空if cmdType.value 4.0:if cmdValue.ctype 0:print(第,i1,行,第2列数据有毛病)checkCmd False# 等待类型内容必须为数字if cmdType.value 5.0:if cmdValue.ctype ! 2:print(第,i1,行,第2列数据有毛病)checkCmd False# 滚轮事件内容必须为数字if cmdType.value 6.0:if cmdValue.ctype ! 2:print(第,i1,行,第2列数据有毛病)checkCmd False#单独按键enterif cmdType.value 7.0:if cmdValue.ctype ! 1:print(第,i1,行,第2列数据有毛病)checkCmd False#组合键 ctrla ctrlc ctrlv.... if cmdType.value 8.0:if cmdValue.ctype 0:print(第,i1,行,第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))# pywinauto.mouse.scroll((700,800),-1000)print(滚轮滑动,int(scroll),距离) elif cmdType.value 7.0:key sheet1.row(i)[1].value pyautogui.press(key)time.sleep(0.5) print(按下,key) elif cmdType.value 8.0:comkey sheet1.row(i)[1].value comkey comkey.split()pyautogui.hotkey(comkey[0],comkey[1])print(按下,comkey[0] ,,comkey[1] )i 1if __name__ __main__:file cmd.xls#打开文件wb xlrd.open_workbook(filenamefile)#通过索引获取表格sheet页# sheet1 wb.sheet_by_index(0)print(欢迎使用Henry自动化工具)sheetname input(请输入需要执行的工作表表名: )sheet1 wb.sheet_by_name(sheetname) #数据检查 checkCmd dataCheck(sheet1)if checkCmd: keyinput(选择功能: 1.执行一次 2.循环到死 \n)if key1:#循环拿出每一行指令mainWork(sheet1)elif key2:while True:mainWork(sheet1)time.sleep(0.2)print(等待0.2秒) else:print(输入有误或者已经退出!)