PythonGUI⾃动化:UIAUTOMATION(⼀)
windows开发平台⼀、常见的windows程序界⾯的框架
MFC:(Microsoft Foundation Classes, 微软基础类库)作⽤在Windows平台做GUI开发使⽤。
WindowsForms: 是微软的.NET 开发框架的图形⽤户界⾯ 的⼀部分。微软在.Net 3.0中发⾏了WPF作为WinForms的替代版,很多时候仍需要和WinForms互操作。
WPF:  (Windows Presentation Foundation)是微软推出的基于Windows 的⽤户界⾯框架,属于.NET Framework 3.0的⼀部分。它提供了统⼀的编程模型、语⾔和框架,真正做到了分离界⾯设计⼈员与开发⼈员的⼯作;同时它提供了全新的多媒体交互⽤户图形界⾯。
Metro:  是微软在Windows Phone 7中正式引⼊的⼀种界⾯设计语⾔,Windows 8,Windows 8.1、Windows 10以及Office 15、Office 16中也采⽤了Metro设计
Qt:  是⼀个跨平台的C++图形⽤户界⾯应⽤程序框架。它也是⽬前流⾏的Linux桌⾯环境KDE的基础。Qt5.3正式版,⾄此Qt实现了对iOS、Android、WP等各平台的全⾯⽀持
⽀持的平台
Windows – XP、Vista、Win7、Win8、Win2008、Win10
Uinux/X11 – Linux、Sun Solaris、HP-UX、Compaq Tru64 UNIX、IBM AIX、SGI IRIX、      FreeBSD、BSD/OS、和其他很多X11平台
Macintosh – Mac OS X
Embedded – 有帧缓冲⽀持的嵌⼊式Linux平台,Windows CE
Qt 优点:跨平台,(只要装了Qt),⽆论在win,linux,android,ios都可以运⾏。
⼆、使⽤开源框架UIAutomation
开源框架UIAutomation,⽀持MFC, Windows Form, WPF, Modern UI(Metro UI), Qt(Partly), Firefox(version<=56 or >=60), Chrome and Electron等。
三、UIAutomation常⽤的⽅法
1、WindowContrl(searchDepth=None,ClassName=None,SubName=None)
(1)  查窗⼝中的程序,如果有中⽂则需⽤Unicode;
(2)  可⽤window.Exists(maxSearchSeconds)来判断此窗⼝是否存在;
2、EditControl(searchFromControl=None)
(1)  查⽂本编辑框位置,到后可⽤DoubleClick()来改变电脑的focus;
(2)  edit.SetValue(“string”)  输⼊值;
3、Win32API.SendKeys(“string”)
如果已在⽂本编辑框位置,则可⽤此⽅法来输⼊值,{Ctrl}为ctrl键,其他类似;{@ 8}格式可输⼊8个@,对于数字也可实现此功能,但对于字母不能;
4、MenuItemControl(searchFromControl=None,Name=None)
查菜单按钮;
5、ComboBoxControl(searchFromControl=None,AutomationI=None)
查下拉框,然后在此基础上⽤Select(“name”)⽅法来选择需要的选项;
6、BottonControl(searchFromControl=None,Name=None,SubName=None)
查按钮;
7、automation.FindControl
( WindowControl对象,lambda c:(isinstance(c, automation.EditControl) or isinstance(c,                    automation.ComboBoxControl)) and c.Name == 'Enter your search term'  )
按条件搜索handle
四、UIAutomation常⽤定位属性
⼀般定位的属性有:ClassName、Name、ProcessId、AutomationId
这些属性的获得考虑使⽤:InspectX64
(在上⾯开源项⽬中) Python-UIAutomation-for-Windows/可以获取
下图1为获取Name的展⽰:
五、UIAutomation常⽤句柄操作
1. Click() 点击;
2. DoubleClick 双击;
3. RighClik() 右键点击;
4. SendKeys() 发送字符;
5. SetValue() 传值,⼀般对EditControl⽤;
6. Select() 下拉项选择,对ComboBoxControl⽤;

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。