pywinauto桌面應用自動化


pywinauto

pywinauto是一組用於自動化Microsoft Windows GUI的python模塊。 最簡單的是,它允許您將鼠標和鍵盤操作發送到窗口對話框和控件,來完成我們自動化操作。

官方文檔:http://pywinauto.github.io/

安裝:

方法一:

通過pip進行安裝:pip install pywinauto 

 方法二:

https://github.com/pywinauto/pywinauto/releases中下載最新的pywinauto,解壓並允許  python setup.py install 進行安裝

驗證是否安裝成功:

方法一:

直接打開python,進行導入對應的庫

方法二:

通過pip進行查看 pip list 

小試牛刀

在練習之前,需要先了解一個內容,目前pywinauto支持2種查看客戶端控件內容

  • Win32 API (backend="win32") - 現在的默認backend

    • MFC, VB6, VCL, 簡單的WinForms控件和大多數舊的遺留應用程序
  • MS UI Automation (backend="uia")

    • WinForms, WPF, Store apps, Qt5, 瀏覽器

    注意: Chrome在啟動之前需要--force-renderer-accessibility cmd標志。 由於comtypes Python庫限制,不支持自定義屬性和控件。

如果不確定自己的軟件測試時哪一種,我們先用默認的,如果運行過程中會報提示, UserWarning: 32-bit application should be automated using 32-bit Python (you use 64-bit Python) UserWarning) 

檢測控件軟件:

我們可以通過以下三種軟件進行檢測應用的控件或窗口,來進行操作

1、Spy++ 包含在MS Visual Studio發行版(甚至是Express或Community)中,可通過“開始”菜單訪問。 它使用Win32 API。 這意味着如果Spy ++能夠顯示所有控件,那么“win32”`backend就是你需要的。 AutoIt Window Info工具是一種Spy ++克隆。

2、Inspect.exe 是Microsoft創建的另一個很棒的工具。 它包含在Windows SDK中,因此可以在x64 Windows上的以下位置找到它:

C:\Program Files (x86)\Windows Kits\10\bin\10.0.17134.0\x64

如果以上路徑不存在,請自行下載安裝:https://developer.microsoft.com/en-us/windows/downloads/windows-10-sdk/

3、ViewWizard軟件,可以非常方便的檢測到我們需要用到的控件類型。

 

安裝也安裝完成了,查看也查看過了,那么先進行啟動我們的客戶端進行測試吧(這里通過的是記事本)

# coding:utf-8
# 導入pywinauto庫
from pywinauto import application
# 直接啟動記事本
app = application.Application().start('notepad.exe')

運行指定程序

分別拿電腦自帶程序和電腦非自帶程序進行模擬打開。

1、windows自帶程序:

這里需要start后面的參數,可以通過上一篇介紹的工具進行獲取,也可以通過鼠標右鍵--屬性查看

# coding:utf-8
from pywinauto import application
# 打開記事本
app = application.Application().start('notepad.exe')

2、非windows自帶程序:

這里我們如果按照上面的方法進行查看的話會報錯誤,這里我們拿電腦上安裝的QQ來測試

發現提示找不到指定的文件

這里把QQ的文件地址全部都拷貝上試試看呢?

 發現這里是直接打開的,因為程序運行后是從環境變量中查找的,我們可以通過把程序添加到環境變量中直接調用

這個時候再次運行發現就已經可以成功的打開了QQ

# coding:utf-8
from pywinauto import application
# 打開QQ
app = application.Application().start('QQScLauncher.exe')

啟動已打開程序

前面的例子我們會發現都是程序沒有運行起來的,那么想要啟動已經運行起來的程序應該怎么做?

方法一:

通過進程號的形式進行打開

 方法二:

通過窗口句柄的形式打開。問題來了?怎么查看窗口句柄?

這個時候需要通過前面說的viewWizard工具進行查看,通過下圖可以看到窗口的句柄為134242

 方法三:

通過標題的方式打開

# coding:utf-8
import pywinauto
# 通過窗口打開
app = pywinauto.Desktop()
win = app['QQ']
print(win)

 

 

可以發現通過句柄的形式也可以指定這個軟件。然后進行對軟件操作


免責聲明!

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



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