1前言一直在使用Python进行自动化测试。最近遇到需要对桌面软件进行自动化测试,即windowsGUI。Python的GUI自动化测试工具有很多,但各有侧重。这次我将详细说明为什么选择uiautomation进行测试。2PythonGUI工具2.1常用PythonGUI编程工具详细参考:https://blog.csdn.net/NoamaNelson/article/details/113678356工具官网介绍wxPythonhttps://www.wxpython.org/wxPython是一套优秀的Python语言GUI图形库允许Python程序员轻松创建具有完整功能键的完整GUI用户界面。Kivyhttps://kivy.org/#homevy是一个开源工具包,它允许使用相同源代码创建的程序跨平台运行。它专注于创新的用户界面开发,例如多点触控应用程序。Kivy还提供了一个多点触控鼠标模拟器。目前支持的平台包括:Linux、Windows、MacOSX和AndroidFlexxhttps://flexx.readthedocs.io/...Flexx是一个用于创建图形界面应用程序的纯Python工具包。它使用网络技术呈现界面。您可以使用Flexx创建桌面应用程序以及将应用程序导出到独立的HTML文档。因为它是用纯Python开发的,所以Flexx是跨平台的。PyQthttps://www.riverbankcomputin...PyQt是Qt库的Python版本。PyQt3支持Qt1到Qt3。PyQt4支持Qt4。它的第一次发布也是在1998年,不过当时叫PyKDE,因为一开始SIP和PyQt并没有分开。PyQt是用SIP编写的。PyQt提供GPL版和商业版Tkinterhttps://docs.python.org/zh-cn...Tkinter(也称Tk界面)是Tk图形用户界面工具包的标准Python界面。Tk是一个轻量级的跨平台图形用户界面(GUI)开发工具。Tk和Tkinter可以运行在大多数Unix平台、Windows和Macintosh系统上pygt...PyGTK允许您使用Python中的图形用户界面轻松创建程序。底层的GTK+提供了各种视觉元素和功能。如果需要,您可以开发在GNOME桌面系统上运行的程序。全功能软件pyui4win域停止更新pyui4win是一个使用自绘技术的开源界面库。支持C++和python,轻松实现QQ、360安全卫士等华丽界面。而且pyui4win所见即所得的界面设计器让C++开发者和python开发者可以直接使用2.2种常见的PythonGUI自动化测试工具,详细对比参考:https://blog.csdn.net/m0_37602827/article/details/108308991tools官网介绍pywinautohttps://pypi.org/project/pywi...主要用在Application类中进行应用程序管理(打开和关闭应用程序等),窗口管理(最小化,最大化,关闭窗口)Pywin32https://pypi.org/project/pywi...包含win32gui、win32api、win32con3个子模块,用于窗口管理(定位窗口、显示和关闭窗口、获取窗口位置等)pyautoguihttps://pyautogui.readthedocs...屏幕控件(屏幕抓图等),鼠标控制(鼠标、点击、双击、右键、拖动等),键盘控制(编辑、按键等)2.3描述经过前面的介绍,我们主要用例进行自动化testing,allp的一些工具不会用到ythonGUI编程。三个常用的pythonGUI自动化测试工具,支持的平台有限,所以折腾了一番,看到大神用的是uiautomation,验证了这个工具很好用,很好用。3uiautomation简介3.1作者博客https://www.cnblogs.com/Yinkaisheng/p/3444132.html3.2uiautomation信息获取博客:https://www.cnblogs.com/Yinkaisheng/p/3444132.htmlgithub:https://github.com/yinkaisheng/Python-UIAutomation-for-Windows/blob/master/readme_cn.md3.3一般内容uiautomation是作者业余时间开发的一个python模块,供自己使用;所以直接安装:pipinstalluiautomationUIAutomation实现的自动化支持微软提供的各种界面开发框架,如Win32、MFC、WindowsForms、WPF、MetroApp、IE;另外,Qt、Firefox、Chrome实现了UIAutomationProvider,也支持UIAutomation;作者使用Python和C++为UIAutomation做了一层包装,方便自己使用,可以快速开发自动化脚本;UIAutomation支持的平台包括WindowsXP(SP3)、WindowsVista、Windows7、Windows8、8.1、10;4uiautomation使用方法4.1常用方法1.WindowControl(searchDepth,ClassName,SubName)#在窗口中查找程序。如果有中文,则需要使用Unicode;可以通过window.Exists(maxSearchSeconds)判断这个窗口是否存在;2.EditControl(searchFromControl)#找到编辑位置,找到后可以使用DoubleClick()改变电脑焦点;edit.SetValue("string")输入值;3.Win32API.SendKeys("string")#如果已经在编辑位置,可以使用该方法输入值,{Ctrl}为ctrl键,其他类似;{@8}格式可以输入8@,数字也可以实现此功能,字母不行...;4、MenuItemControl(searchFromControl,Name)#找到菜单按钮;5.ComboBoxControl(searchFromControl,AutomationI)#找到下拉框,然后在此基础上使用Select("name")方法选择需要的选项;6.BottonControl(searchFromControl,Name,SubName)#查找按钮;7.automation.FindControl(firefoxWindow,lambdac:(isinstance(c,automation.EditControl)orisinstance(c,automation.ComboBoxControl))andc.Name=='Enteryoursearchterm')#按条件搜索handle4.2句柄常用操作Click()#Click;RighClik()#右击;SendKeys()#发送字符;SetValue()#传值,一般用于EditControl;4.3windows程序常用操作subprocess.Popen('Name')#用进程打开程序;window.Close()#关闭窗口;window.SetActive()#使用;window.SetTopMost()#设为顶部window.ShowWindow(uiautomation.ShowWindow.Maximize)#窗口最大window.CaptureToImage('Notepad.png')#屏幕截图uiautomation.Win32API.PressKey(uiautomation.Keys.VK_CONTROL)#按住Ctrl键uiautomation.Win32API.ReleaseKey(uiautomation.Keys.VK_CONTROL)#释放Ctrl键automation.GetConsoleWindow()#返回运行python的控制台窗口,打开控制台automation.Logger.ColorfulWriteLine('\nIwillopen
