什么是pywinauto
它是什么?
pywinauto是一组用于自动化Microsoft Windows GUI的python模块。最简单的是,它允许您将鼠标和键盘操作发送到Windows对话框和控件。
安装
pip install pywinauto
手动安装
安装以下Python软件包
pyWin32
comtypes
six
(可选) Pillow(进行屏幕截图)
从https://github.com/pywinauto/pywinauto/releases下载最新的pywinauto
打开包装并运行 python setup.py install
要检查您是否正确安装了它,请运行Python
>>> from pywinauto.application import Application
>>> app = Application(backend="uia").start("notepad.exe")
>>> app.UntitledNotepad.type_keys("%FX")
它是如何工作
入门指南中介绍了核心概念。
通过__getattribute__每个类的属性访问()完成许多工作。例如,当您获得Application或Dialog对象的属性时,它将分别查找对话框或控件。
myapp.Notepad #查找标题为“类似于”的应用程序的窗口/对话框
myapp.PageSetup.OK #首先查找标题为“ PageSetup”的对话框,然后在该对话框中查找标题为 “ OK” 的控件。
此属性解析将延迟(具有默认超时),直到成功为止。因此,例如,如果您选择菜单选项,然后查找结果对话框,例如
app.UntitledNotepad.menu_select("File->SaveAs")
app.SaveAs.ComboBox5.select("UTF-8")
app.SaveAs.edit1.set_text("Example-utf8.txt")
app.SaveAs.Save.click()
在第二行,执行该行时可能无法打开“另存为”对话框。因此,发生的事情是,我们等待直到有一个要解决的控件再解决该对话框。在这一点上,如果我们找不到带有ComboBox5控件的SaveAs对话框,则我们将等待很短的时间,然后重试,该操作将重复到最大时间(默认为5秒!)。
这是为了避免必须显式使用time.sleep或“ wait”函数。
如果您的应用程序执行长时间的操作,新对话框可能会出现或稍后消失。您可以像这样等待其新状态
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的另一个模块。
其他脚本语言工具
(Perl)Win32 :: GuiTest
(Ruby)Win32-Autogui -Win32 API的包装。
(Ruby)RAutomation-有3个适配器:Win32 API,UIA,AutoIt。
其他免费工具
(C#)Winium.Desktop-一个年轻但不错的基于MS UI自动化的工具。
(C#)TestStack.White-另一个基于MS UI Automation的优秀库,历史悠久。
不含AutoIt的工具,具有自己的类似于Basic的语言(基于Win32 API,没有.NET计划)
AutoHotKey-具有自己的脚本语言(.ahk)的本地C ++工具
GitHub上的“很棒的测试自动化”列表
大量用于功能测试的开源工具
商业工具
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)
网友评论