1. 程式人生 > 實用技巧 >利用Python製作一個 截圖+Excel操作瀏覽器小工具

利用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輸入資訊

3.執行RunData.py檔案