代碼如下:
GetData.py
import xlrd
class ReadExcel():
def __init__(self,file):
self.open_excel = xlrd.open_workbook(file)
# 獲取Sheet名
def GetSheetName(self):
sheet_name = self.open_excel.sheet_names()
return sheet_name
# 獲取數據
def ExcelData(self,sheetname):
sheet = self.open_excel.sheet_by_name(sheetname)
# 第一行作為dict的key
keys = sheet.row_values(0)
# nrows:總行數,ncols:總列數
nrows,ncols = sheet.nrows,sheet.ncols
# 整個sheet的數據
y = []
if nrows < 2:
print ('總行數少於1')
else:
# 循環取行的數據
for i in range(1,nrows):
# 一行的數據
k = {}
# 循環取列的數據
for j in sheet.row_values(i):
# 獲取當前取的數據下標
data_index = sheet.row_values(i).index(j)
# 寫入字典,第一行作為key
k[keys[data_index]] = j
y.append(k)
return y
if __name__ == '__main__':
E = ReadExcel(r'./Operation.xlsx')
print (E.GetSheetName(),E.ExcelData('Sheet1'))
GetPosition.py
import aircv as ac
import sys
def matchImg(imgsrc,imgobj,confidencevalue=0.9):#imgsrc=原始圖像,imgobj=待查找的圖片
imsrc = ac.imread(imgsrc)
imobj = ac.imread(imgobj)
match_result = ac.find_all_template(imsrc,imobj,confidencevalue) # {'confidence': 0.5435812473297119, 'rectangle': ((394, 384), (394, 416), (450, 384), (450, 416)), 'result': (422.0, 400.0)}
if match_result:
return match_result[0]['result']
else:
input('沒有找到圖片,結束運行')
sys.exit()
if __name__ == '__main__':
position = matchImg(r'.\imgobj.png',r'F:\test\rrrr\222.png',confidencevalue = 0.9)
RunData.py
from GetData import ReadExcel
from GetPosition import matchImg
from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
import time
class RunData():
def __init__(self):
self.driver = webdriver.Chrome()
def ProcessExcelData(self,data):
for i in data:
if i['操作圖片路徑']:
self.driver.get_screenshot_as_file(r'.\imgobj.png')
size = matchImg(r'.\imgobj.png',r'%s'%(i['操作圖片路徑']))
time.sleep(1)
if i['操作方式'] == '輸入網址':
self.driver.get(i['值'])
elif i['操作方式'] == '輸入':
ActionChains(self.driver).move_by_offset(size[0], size[1]).click().send_keys(i['值']).perform()
ActionChains(self.driver).move_by_offset(-size[0], -size[1]).perform()
elif i['操作方式'] == '點擊':
ActionChains(self.driver).move_by_offset(size[0], size[1]).click().perform()
ActionChains(self.driver).move_by_offset(-size[0], -size[1]).perform()
elif i['操作方式'] == '等待':
time.sleep(eval(i['值']))
elif i['操作方式'] == '關閉瀏覽器':
self.driver.quit()
if __name__ == '__main__':
E = ReadExcel(r'./Operation.xlsx')
Sheet = E.GetSheetName()
for j in Sheet:
TestData = E.ExcelData(j)
R = RunData()
R.ProcessExcelData(TestData)
原理;
GetData.py獲取excel操作步驟,GetPosition.py通過截圖獲取當前頁面操作的坐標點,再通過RunData.py文件進行操作
使用步驟:
1.截取需要操作的元素

2.在excel輸入信息,可以多個sheet

3.運行RunData.py文件
