什么是pywinauto?
它是什么语淘?
pywinauto是一組用于自動化Microsoft Windows GUI的python模塊。最簡單的是病毡,它允許您將鼠標(biāo)和鍵盤操作發(fā)送到Windows對話框和控件克胳。
安裝
pip?install?pywinauto
手動安裝
安裝以下Python軟件包
pyWin32
comtypes
six
(可選)??Pillow(進(jìn)行屏幕截圖)
從https://github.com/pywinauto/pywinauto/releases下載最新的pywinauto
打開包裝并運(yùn)行?python?setup.py?install
要檢查您是否正確安裝了它,請運(yùn)行Python
>>> from?pywinauto.application?import?Application
>>> app =?Application(backend="uia").start("notepad.exe")
>>> app.UntitledNotepad.type_keys("%FX")
它是如何工作
入門指南中介紹了核心概念臼勉。
通過__getattribute__每個(gè)類的屬性訪問()完成許多工作。例如餐弱,當(dāng)您獲得Application或Dialog對象的屬性時(shí)宴霸,它將分別查找對話框或控件。
myapp.Notepad #查找標(biāo)題為“類似于”的應(yīng)用程序的窗口/對話框
myapp.PageSetup.OK #首先查找標(biāo)題為“ PageSetup”的對話框膏蚓,然后在該對話框中查找標(biāo)題為?“ OK” 的控件瓢谢。
此屬性解析將延遲(具有默認(rèn)超時(shí)),直到成功為止驮瞧。因此氓扛,例如,如果您選擇菜單選項(xiàng)论笔,然后查找結(jié)果對話框幢尚,例如
app.UntitledNotepad.menu_select("File->SaveAs")
app.SaveAs.ComboBox5.select("UTF-8")
app.SaveAs.edit1.set_text("Example-utf8.txt")
app.SaveAs.Save.click()
在第二行破停,執(zhí)行該行時(shí)可能無法打開“另存為”對話框。因此尉剩,發(fā)生的事情是真慢,我們等待直到有一個(gè)要解決的控件再解決該對話框。在這一點(diǎn)上理茎,如果我們找不到帶有ComboBox5控件的SaveAs對話框黑界,則我們將等待很短的時(shí)間,然后重試皂林,該操作將重復(fù)到最大時(shí)間(默認(rèn)為5秒@署)。
這是為了避免必須顯式使用time.sleep或“ wait”函數(shù)础倍。
如果您的應(yīng)用程序執(zhí)行長時(shí)間的操作烛占,新對話框可能會出現(xiàn)或稍后消失。您可以像這樣等待其新狀態(tài)
app.Open.Open.click() #打開大文件
app.Open.wait_not('visible') #確惫灯簦“打開”對話框不可見
app.window(title='data.txt - Notepad').wait('ready', timeout=30)#等待30秒鐘忆家,直到data.txt被加載
一些類似的比較工具
?Python工具
?PyAutoGui-流行的跨平臺庫(具有基于圖像的搜索,沒有基于文本的控件操作)德迹。
?Lackey?-Sikuli的純Python替代品(基于圖像模式匹配)芽卿。
?AXUI?-MS UI Automation API的包裝器之一。
?winGuiAuto-使用Win32 API的另一個(gè)模塊胳搞。
?其他腳本語言工具
?(Perl)Win32 :: GuiTest
?(Ruby)Win32-Autogui?-Win32 API的包裝卸例。
?(Ruby)RAutomation-有3個(gè)適配器:Win32 API,UIA肌毅,AutoIt筷转。
?其他免費(fèi)工具
?(C#)Winium.Desktop-一個(gè)年輕但不錯的基于MS UI自動化的工具。
?(C#)TestStack.White-另一個(gè)基于MS UI Automation的優(yōu)秀庫悬而,歷史悠久旦装。
?不含AutoIt的工具,具有自己的類似于Basic的語言(基于Win32 API摊滔,沒有.NET計(jì)劃)
?AutoHotKey-具有自己的腳本語言(.ahk)的本地C ++工具
?GitHub上的“很棒的測試自動化”列表
?大量用于功能測試的開源工具
?商業(yè)工具
?WinRunner(http://www.mercury.com/us/products/quality-center/functional-testing/winrunner/)
?SilkTest(http://www.segue.com/products/functional-regressional-testing/silktest.asp)
?其他許多(http://www.testingfaqs.org/t-gui.html)