pywinauto入門


  • Python中GUI自動化工具:
  1.  PyAutoGui:一個流行的跨平台庫(具有基於圖像的搜索功能,沒有基於文本的控件操作)
  2.  Lackey:基於圖像模式匹配
  3.  AXUI:MS UI  Automation API控件的一個包裝器
  4.  winGuiAuto:使用Win32 API的控件模塊
  5.  Pywinauto:同時支持控件操作和圖像操作,支持Win32 API和MS UI Automation API
  • Pywinauto的環境安裝:

  安裝前提:1、安裝好 python(建議使用 python3.5以上的版本);2、確認pip是否能正常使用

  安裝方式一:pip在線安裝,pip install pywinauto

  安裝方式二:離線安裝

  1、下載壓縮包:python第三方庫管理平台:https://pypi.org/

  2、解壓壓縮包

  3、cmd進入壓縮之后的文件夾中

  4、運行:python setup.py install進行安裝

  • PC端程序自動化的切入點:

   確定應用程序的可訪問技術,pywinauto的后端,支持控件的訪問技術:

  1、Win32 API(backend="win32")- 默認的backend,MFC,VB6,VCL。簡單的WinForms控件和大多數舊的應用程序

  2 、MS UI Automation API ( backend = " uia " ):WinForms , WPF , Store apps , Qt5 , 瀏覽器

  • 啟用應用程序:

  切入點主要是限制自動化控制進程的范圍,如一個程序有多個實例,自動化控制一個實例而保證其他實例(進程)不受影響。在pywinauto中主要有兩種對象可以建立這種切入口:

  1、application:application的作業范圍是一個進程,如一般的桌面應用程序都未此類

  2、Desktop:Desktop的作用范圍可以跨進程。主要用於一個程序可以包含多個實例(進程)的程序

  •   程序檢測相關輔助工具的使用:
  1. GUI對象檢查/Spy工具:

  Inspect.exe(C: Program Files (*86)Windows Kits\10\bin\x64):Inspect.exx是Microsoft創建的另一個很棒的工具。它包含在Windows SDKI中,因此可以在x64 Windows上的以下位置找到它

  spy++.exe,它使用win32 API。如果spy+能夠顯示程序的所有控件,那么該應用程序適合使用win32的 backend

    ViewWizard,Viewwizard(窗口信息査看精靈),使用起來非常簡潔可查看窗口和控件句柄、類名、標題、風格等信息(百度搜索下載即可)

  •  pywinauto打開到指定的應用程序

from pywinauto.application import Application
# 打開指定的應用程序
# 1、打開windows自帶的應用:記事本
pc = Application(backend="uia").start("notepad.exe")

# 2、打開任意一個應用程序
pc = Application(backend="uia").start(r"C:\Program Files\PremiumSoft\Navicat Premium 12\navicat.exe")
  •  如何選擇應用程序的窗口

  1、根據窗口標題或者類名選擇:dlg = app[窗口類名/標題]

  2、根據窗口的類名選擇窗口:dlg = app.窗口類名

  # 非英文程序,推薦使用方式一

from pywinauto.application import Application# 啟動navicat應用程序
pc = Application(backend="win32").start(r"C:\Program Files\PremiumSoft\Navicat Premium 12\navicat.exe")
time.sleep(10)
# 方式一:使用類名來選擇窗口,app[類名/標題]:推薦使用改方式
# dlg = pc['TNavicatMainForm']
# 通過窗口標題去選擇窗口
# dlg = pc["Navicat Premium"]

# 方式二:app。窗口類名
dlg = pc.TVirtualStringTree
# 打印窗口中所有的控件
dlg.print_control_identifiers()
  •  應用程序的窗口的操作方法
from pywinauto.application import Application
import time

# 啟動navicat應用程序
pc = Application(backend="win32").start(r"notepad.exe")
# 通過窗口標題去選擇窗口
dlg = pc["Notepad"]

# 窗口最大化
dlg.maximize()
# 查看窗口顯示狀態
status = dlg.get_show_state()
print(status)  # 運行結果:3

# 窗口最小化
dlg.minimize()

# 查看窗口顯示狀態
rect = dlg.rectangle()
print(rect)  # 運行結果:(L-32000, T-32000, R-31840, B-31972)
# 像素坐標從左上角點開始計算,左上右下
# 窗口恢復正常大小
dlg.restore()

# 關閉窗口
dlg.close()
  •  應用程序的窗口上的選擇

 

 

 

 

 

 

 

  

 

 

 

 

 

 

 

 

 

 

 

 


免責聲明!

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



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