1. 程式人生 > 程式設計 >python自動化工具之pywinauto例項詳解

python自動化工具之pywinauto例項詳解

一、win環境應用自動化

1.瀏覽器中下載

2.在cmd下啟動:python get-pip.py

3.在cmd中輸入python -m pip --version檢視安裝pip的版本。

4.模組安裝:pip3 install pywinauto

5.程式中載入模組:

import time
from pywinautoimport application

二,例項

#encoding=utf-8
#author: walker
#date: 2018-04-26
#summary: 以 pywinauto 呼叫 ABBYY FineReader 12 Professional 將 pdf 另存為 txt
#sys.version:'3.6.5 (v3.6.5:f59c0932b4,Mar 28 2018,16:07:46) [MSC v.1900 32 bit (Intel)]'
 
import os,sys,time,shutil,ctypes
from pywinauto.application import Application
 
# 轉換單個 pdf 為 txt
# 需要保證輸出 txt 檔案所在目錄是存在的,txt 檔案不存在
# 外層許捕獲異常
def Pdf2Txt(pdfFile,txtFile):
 print('Enter Pdf2Txt ...')
 
 FineReaderPath = r'F:\software\ABBYY FineReader 12\FineReader.exe'
 UsualTimeout = 30 
 
 cmd = r'"%s" "%s"' % (FineReaderPath,pdfFile)
 print('cmd: %s' % cmd)
 app = Application(backend="win32").start(cmd)
 
 mainWindow = app.window(class_name=r'FineReader12MainWindowClass')
 mainWindow.wait("ready",timeout=UsualTimeout)
 
 statButton = mainWindow.child_window(process=app.process,class_name='Button',title_re=r'\d+ OF \d+ PAGES RECOGNIZED')
 
 statButton.wait("exists visible",timeout=UsualTimeout)
 statButton.wait_not("visible",timeout=RecognizeTimeout) # 具體轉換可能要很久
 
 mainWindow.dump_tree(filename='mainWindow2.txt')
 
 mainWindow.ToolbarSave.wait('enabled',timeout=RecognizeTimeout).click() # 點選儲存按鈕
 
 saveDlg = app.window(class_name=r'#32770',title=r'Save document as')
 saveDlg.wait("exists visible",timeout=UsualTimeout)
 saveDlg.dump_tree(filename='saveDlg.txt')
 saveDlg.DUIViewWndClassName.DirectUIHWND.ComboBox2.select('Text (*.txt)') # 設定儲存格式
 saveDlg.DUIViewWndClassName.DirectUIHWND.FloatNotifySink.ComboBox.Edit.set_text(txtFile) # 設定儲存檔名
 
 saveDlg.DUIViewWndClassName.DirectUIHWND.CheckBox.UncheckByClick() # 取消複選框的選中狀態(儲存後開啟)
 
 # saveDlg.type_keys(r'%S') # 儲存為 txt(Alt + S)
 saveDlg.child_window(title="儲存(&S)",class_name="Button").wait('ready',timeout=RecognizeTimeout).click() # 點選儲存按鈕
 print('儲存(&S) Button clicked!')
 
 saveDlg.wait_not("exists",timeout=UsualTimeout)
 
 cnt = 0
 for _ in range(0,100):
 time.sleep(0.1)
 cnt += 1
 if os.path.exists(txtFile):
  break
 
 app.kill()
 
 saveDlg.wait_not("exists",timeout=UsualTimeout)
 mainWindow.wait_not("exists",timeout=20)
 print('not exists mainWindow!')
 print('current time:%f (%s)' % (time.time(),time.strftime('%Y-%m-%d %H:%M:%S',time.localtime())))
 
 return True

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援我們。