利用Python制作一個 截圖+Excel自動化小工具


代碼如下:

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文件


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM