本文主要用到一个uiautomation的开源框架,是一个咱们中国人写的,支持MFC,Windows Forms,WPF,Metro,Qt界面;此文主要是自己的个人总结,开源作者原文:http://www.cnblogs.com/Yinkaisheng/p/3444132.html

gethub地址: https://github.com/yinkaisheng/Python-UIAutomation-for-Windows

此自动化的主要思想是利用此框架抓取到程序的各种句柄,然后对句柄执行各种操作。

一、uiautomation方法

1、WindowContrl(searchDepth,ClassName,SubName)          查找窗口中的程序,如果有中文则需用Unicode;可用window.Exists(maxSearchSeconds)来判断此窗口是否存在;

2、EditControl(searchFromControl)                 查找编辑位置,找到后可用DoubleClick()来改变电脑的focus;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,

lambda c:(isinstance(c, automation.EditControl) or isinstance(c, automation.ComboBoxControl)) and c.Name == 'Enter your search term'

) 按条件搜索handle

二、对找到句柄常用操作

Click()            点击;

RighClik()       右键点击;

SendKeys()     发送字符;

SetValue()      传值,一般对EditControl用;

三、对windows程序常用操作

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()      #return console window that runs python,打开控制台

automation.Logger.ColorfulWriteLine('\nI will open Notepad and automate it. Please wait for a while.')  控制台传值(彩色字体),普通传值用WriteLine;

automation.ShowDesktop() 显示桌面;

四、句柄的抓取

直接运行automation模块枚举窗口时,支持下列参数(从doc窗口运行automation.py程序 ):

-t intValue     延迟枚举时间,单位秒

-r                  从树的根部枚举,如果不指定,从当前窗口枚举

-d intValue    枚举控件树的的深度,如果不指定,枚举整个树

-f                  从焦点控件枚举,如果不指定,从当前窗口枚举

-c                  从光标下的控件枚举,如果不指定,从当前窗口枚举

-a                  获取光标下控件及其所有父控件

-n                 显示控件的完整Name, 如果不指定,只显示前30个字符

-m                显示控件更多属性,默认只显示控件的四个属性

示例:

automation.py c –t3 // 3秒后枚举当前窗口所有控件

automation.py c –d2 –t3 // 3秒后枚举当前窗口前三层控件

automation.py c –r –d1 –t0 -n // 0秒后从根部枚举前两层控件,并显示控件完整名称

automation.py c –c –t3 // 3秒后显示鼠标光标下面的控件信息

python桌面程序自动化教程_桌面应用自动化python相关推荐

  1. python每天八分钟教程_每天八分钟Python基础教程——对象持久化、序列化

    之前,在使用Python开展数据分析的过程中,经常会遇到需要基于同一份中间结果分别做不同维度的分析统计,开始我们做的思路是每次都重新计算,后来发现在TB级别的数据背景下这种操作是非常浪费算力的,考虑到 ...

  2. 怎么用python编写程序计算标准差_自学生信Python(第五天)|如何计算标准差?...

    如何计算标准差? 本人是一枚生物学的学生,由于对生物信息学特别感兴趣,于是想自学生物信息学(新手莫怪).了解到生物信息学要有编程基础,尤其是要会一门编程语言,例如:R语言.Python.Perl等,还 ...

  3. python编写arcgis脚本教程_面向ArcGIS的Python脚本编程

    前言 1 鸣谢 3 第一部分 Python和地理处理的相关概念 4 第1章 Python简介 4 1.1 引言 4 1.2 Python的特点 4 1.3 脚本语言和程序语言 4 1.4 ArcGIS ...

  4. python编写程序解方程_第2章 Python初步 课后题

    [单选题]建设中国特色社会主义,把我国建设成为富强.民主.文明.和谐.美丽的社会主义现代化强国,是我国各族人民的( ) [简答题]案例系统的测试报告,提交时间为9月28日,上午九点之前 [单选题]一份 ...

  5. python设置程序最大内存_限制你的Python程序所能使用的最大内存

    如果程序开发不当,可能会出现占用过多内存的情况.特别是在Docker里面,如果Python程序占用太多内存,可能会导致Docker容器死掉. 为了限制Python程序所能使用的最大内存,我们可以使用P ...

  6. python语音程序设计基础篇_【笔记】python自学笔记(基础篇)——字典操作

    字典:是一系列键值对,每个关键字都对应一个值,我们可以使用关键字来访问关联的值,与关键字关联 的可以是数,字符串,列表乃至字典,事实上,可将任何python对象用作字典的值 字典用放在花括号{}中的一 ...

  7. 用python写生日祝福的教程_祝豌豆生日快乐 - Python猫的个人空间 - OSCHINA - 中文开源技术交流社区...

    不算不知道,一算吓一跳:近三个月,豌豆已经读完心理学相关的书 14 本,为此写了 12 篇文章,按每篇平均 4000 字算,已经累计 4.8 万字了. 这还没完,她还给某个篇均阅读量 2.5 万的电视 ...

  8. 只能输入字母的c语言程序设计教程课后答案,c语言程序设计基础教程_习题答案20120319...

    <c语言程序设计基础教程_习题答案20120319>由会员分享,可在线阅读,更多相关<c语言程序设计基础教程_习题答案20120319(54页珍藏版)>请在技术文库上搜索. 1 ...

  9. 创意c语言程序设计,重庆理工大学-c语言程序设计基础教程_习题答案(纪纲_金艳).doc...

    重庆理工大学-c语言程序设计基础教程_习题答案(纪纲_金艳).doc 还剩 56页未读, 继续阅读 下载文档到电脑,马上远离加班熬夜! 亲,很抱歉,此页已超出免费预览范围啦! 如果喜欢就下载吧,价低环 ...

  10. 只能输入字母的c语言程序设计教程课后答案,c语言程序设计基础教程_习题答案解析.doc...

    c语言程序设计基础教程_习题答案解析.doc 习题答案 第1章 填空题 应用程序ONEFUNC.C中只有一个函数,这个函数的名称是__main . 一个函数由__函数头__和__函数体__两部分组成. ...

最新文章

  1. 设计模式系列-建造者模式
  2. Linux进程间通信三 System V 信号量简介与示例
  3. vfifo控制mig_MIG IP控制DDR3读写测试
  4. 庆祝教师节,李宁老师课程优惠劵疯抢中、会员卡优惠中,先到先得
  5. python测试题 - 字典操作
  6. java中抛出异常快捷键_idea中处理异常的快捷键
  7. python如何连续查找字符串_在另一个字符串Python中多次查找字符串
  8. DataSet运用DES加解密到Xml
  9. 客气话要靠谱。比如公司业务一直没开展,却说学到了太多东西,那学的难道是怎样把公司搞死?
  10. Python3实现批量下载百度搜索图片
  11. jquery 文件上传 触发两次_聊一聊jquery文件上传(支持多文件上传)
  12. HDU 5025 Saving Tang Monk
  13. 计算机1946考试试题,统考计算机考试试题及答案
  14. html调用properties,聊聊html中的properties和attributes
  15. Altium Designer PCB与SCH参照布局
  16. 微信公众号短链生成服务器,微信公众号短链接生成源码
  17. 稀里糊涂的准备开始了……
  18. pcb二次钻孔_pcb钻孔的注意事项
  19. js中history对象
  20. LeetCode 208 实现 Trie (字典树)

热门文章

  1. 金融分析python和r语言比较_金融领域R语言对比python
  2. 软件测试工程师面试自我介绍部分模板
  3. Redis学习(三) - Redis客户端对比及配置(SpringBoot)
  4. lol服务器维修2019,lol服务器是不是炸了 2019年3月23出现预料之外的错误
  5. 锁卡,每插入一张新卡都需要进行解锁
  6. 如何选择一个好的简历模板
  7. 软考中级网络工程师知识点笔记
  8. Android JNI开发笔记二:动态库和静态库
  9. java单点登录解决方案_N多系统单点登录,实现、解决方案。四种解决方案
  10. 360环视TOP10供应商榜单发布!未来五年市场规模将超300亿元