说明:

Pywinauto是基于Python开发的,用于自动化测试的脚本模块,主要操作于Windows标准图形界面。它可以允许你很容易的发送鼠标、键盘动作给Windows的对话框和控件。 其中,最主要功能为对windows标准控件的一系列动作可编程处理。包括对窗口的指定、鼠标或键盘操作、获得控件属性等等。程序的开始为对所需应用的启 动或连接。获得程序连接后,pywinauto通过窗口的名称、类名、是否可见等属性寻找匹配的窗口,进而通过类似方法寻找用户所需的控件,并获得相应的 句柄。之后,用户可通过易理解的编程方式对指定控件进行相关操作的编程,包括鼠标点击、键盘输入、判断控件间关系、获取控件属性等。

文档参考:

pywinauto 0.5.4 documentation Windows GUI Automation with Python pywinauto官网,带Demo example 在中文windows下使用pywinauto进行窗口操作 用pywinauto进行win32应用程序的测试

举个例子

! /usr/bin/env python

coding=GB18030

'''FuncName: johnny-pywinauto.pyDesc: study pywinautoDate: 2016-10-10 14:30Author: johnnyHome:http://blog.csdn.net/z_johnny'''

from pywinauto import applicationimport SendKeysimport time

class Pywin(object):

"""

pywin framwork main class

tool_name : 程序名称,支持带路径

windows_name : 窗口名字

"""

SLEEP_TIME = 1

def __init__(self):

"""

初始化方法,初始化一个app

"""

self.app = application.Application()

def run(self, tool_name):

"""

启动应用程序

"""

self.app.start_(tool_name)

time.sleep(1)

def connect(self, window_name):

"""

连接应用程序

app.connect_(path = r"c:\windows\system32\notepad.exe")

app.connect_(process = 2341)

app.connect_(handle = 0x010f0c)

"""

self.app.connect_(title = window_name)

time.sleep(1)

def close(self, window_name):

"""

关闭应用程序

"""

self.app[window_name].Close()

time.sleep(1)

def max_window(self, window_name):

"""

最大化窗口

"""

self.app[window_name].Maximize()

time.sleep(1)

def menu_click(self, window_name, menulist):

"""

菜单点击

"""

self.app[window_name].MenuSelect(menulist)

time.sleep(1)

def input(self, window_name, controller, content):

"""

输入内容

"""

self.app[window_name][controller].TypeKeys(content)

time.sleep(1)

def click(self, window_name, controller):

"""

鼠标左键点击

example:

下面两个功能相同,下面支持正则表达式

app[u'关于“记事本”'][u'确定'].Click()

app.window_(title_re = u'关于“记事本”').window_(title_re = u'确定').Click()

"""

self.app[window_name][controller].Click()

time.sleep(1)

def double_click(self, window_name, controller, x = 0,y = 0):

"""

鼠标左键点击(双击)

"""

self.app[window_name][controller].DoubleClick(button = "left", pressed = "", coords = (x, y))

time.sleep(1)

def right_click(self, window_name, controller, order):

"""

鼠标右键点击,下移进行菜单选择

window_name : 窗口名

controller:区域名

order : 数字,第几个命令

"""

self.app[window_name][controller].RightClick()

for down in range(order):

SendKeys.SendKeys('{DOWN}')

time.sleep(0.5)

SendKeys.SendKeys('{ENTER}')

time.sleep(1)

if name == "__main__":

app = Pywin()

# 记事本例子

tool_name = "notepad.exe"

# 通过Spy++ 获取window_name,即标题文本

window_name = u"无标题 - 记事本"

menulist = u"帮助->关于记事本"

# 通过Spy++ 获取controller,即窗口类名

controller = "Edit"

content = u"johnny"

window_name_new = content + ".txt"

# 启动程序,记事本只能开一个

app.run(tool_name)

app.connect(window_name)

app.max_window(window_name)

app.menu_click(window_name,menulist)

app.click(u'关于记事本', u'确定')

app.input(window_name,controller,content)

# Ctrl + a 全选

app.input(window_name,controller,"^a")

# 选择复制

app.right_click(window_name,controller,3)

#选择粘贴

app.right_click(window_name,controller,4)

SendKeys.SendKeys('{ENTER}')

# Ctrl + v 粘贴

app.input(window_name,controller,"^v")

# Ctrl + s 保存

app.input(window_name,controller,"^s")

# 输入文件名

app.input(u"另存为",controller,content)

# 保存

app.click(u"另存为","Button")

try:

app.click(u"确认另存为","Button")

except:

pass

finally:

app.close(window_name_new)

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149其他

1.安装

pip install pywinautopip install SendKeys

SendKeys 需要VCForPython27.msi环境支持

123VCForPython27(SendKeys需要).msi 官方下载

2.SendKeys中特殊字符的键代码

BACKSPACE {BACKSPACE}、{BS} 或 {BKSP} BREAK {BREAK} CAPS LOCK {CAPSLOCK} DEL 或 DELETE {DELETE} 或 {DEL} DOWN ARROW(下箭头) {DOWN} END {END} ENTER {ENTER} 或 ~ ESC {ESC} HELP {HELP} HOME {HOME} INS 或 INSERT {INSERT} 或 {INS} LEFT ARROW(左箭头) {LEFT} NUM LOCK {NUMLOCK} PAGE DOWN {PGDN} PAGE UP {PGUP} PRINT SCREEN {PRTSC}(保留,以备将来使用) RIGHT ARROW(右箭头) {RIGHT} SCROLL LOCK {SCROLLLOCK} TAB {TAB} UP ARROW(上箭头) {UP} F1 {F1} F2 {F2} F3 {F3} F4 {F4} F5 {F5} F6 {F6} F7 {F7} F8 {F8} F9 {F9} F10 {F10} F11 {F11} F12 {F12} F13 {F13} F14 {F14} F15 {F15} F16 {F16} 数字盘加号 {ADD} 数字盘减号 {SUBTRACT} 数字盘乘号 {MULTIPLY} 数字盘除号 {DIVIDE}

python中的星号和乘号_python中的乘号相关推荐

  1. Python基础_第5章_Python中的数据序列

    Python基础_第5章_Python中的数据序列 文章目录 Python基础_第5章_Python中的数据序列 Python中的数据序列 一.字典--Python中的==查询==神器 1.为什么需要 ...

  2. Python基础_第3章_Python中的循环结构

    Python基础_第3章_Python中的循环结构 文章目录 Python基础_第3章_Python中的循环结构 Python中的循环结构 一.回顾分支练习题 1.判断是否为一个合法三角形 2.求世界 ...

  3. python列表前加星号是什么_Python中的星号:用途及使用方法(1)

    Python部落(python.freelycode.com)组织翻译,禁止转载,欢迎转发. 原作者:Trey Hunner Python中 *和**很常见.无论是对于编程萌新还是许多从其他编程语言( ...

  4. python post与get的区别_python中get和post有什么区别

    更多编程教程请到:菜鸟教程 https://www.piaodoo.com/ 友情链接: 高州阳光论坛https://www.hnthzk.com/ 人人影视http://www.sfkyty.com ...

  5. python深复制与浅复制_Python中的深拷贝和浅拷贝详解

    要说清楚Python中的深浅拷贝,需要搞清楚下面一系列概念: 变量-引用-对象(可变对象,不可变对象)-切片-拷贝(浅拷贝,深拷贝) [变量-对象-引用] 在Python中一切都是对象,比如说:3, ...

  6. python运行mcmc为何老出错_python中mcmc方法的实现

    MCMC方法在贝叶斯统计中运用很多,MIT发布的EMCEE是实现的比较好的.介绍页面在下面.源代码中examples里的代码可以帮助理解各种功能,特别是line.py 列出了最小二乘法,最大似然法和M ...

  7. python实例属性与类属性_Python中的类属性和实例属性引发的一个坑-续

    上篇文章Python 中的类属性和实例属性,我们探讨了类属性和实例属性引发的一个小坑.总结了类属性和实例属性的区别如下:类属性可以被类和实例调用,实例属性只能被实例调用 类属性不会随着实例的调用而改变 ...

  8. python计算数组元素的和_python中数组的运算

    Python中进行数组的运算需要调用NumPy包. 其官网是:http://www.numpy.org/​www.numpy.org NumPy是Python语言的一个扩充程序库.它支持高级大量的维度 ...

  9. python中格式化字符串的作用_python中字符串格式化的意义(化妆)

    格式 描述 %%百分号标记 #就是输出一个% %c字符及其ASCII码 %s字符串 %d有符号整数(十进制) %u无符号整数(十进制) %o无符号整数(八进制) %x无符号整数(十六进制) %X无符号 ...

  10. python中 r是什么意思_python中rb含义理解

    Python文件读写的几种模式: r,rb,w,wb 那么在读写文件时,有无b标识的的主要区别在哪里呢? 文件使用方式标识 'r':默认值,表示从文件读取数据 'w':表示要向文件写入数据,并截断以前 ...

最新文章

  1. 【廖雪峰python入门笔记】for循环
  2. 华科与浙大计算机学院,计算机最强14所高校排名,清华第2,浙大第4,南大第6,华科第10...
  3. How To Do @Async in Spring--转
  4. [kubernetes] kubectl proxy 让外部网络访问K8S service的ClusterIP
  5. 在.NET Core微服务中使用HostBuilder和Generic Host
  6. 2.图像作为函数 | 生成高斯噪音_8
  7. extjs combobox下拉框显示位置问题
  8. 图文并茂超详细搭建memcache缓存服务器(nginx+php+memcache+mysql)
  9. 超详细Python进行信用评分卡建模【kaggle的give me some credit数据集】【风控建模】
  10. smb服务器速度测试_360路由器做smb服务器各种情况拷贝速度测试外加加装5g网卡...
  11. Spring内异常 application exception overridden by commit exception
  12. nginx在linux reload报错,nginx reload和reopen
  13. 一文看懂李录价值投资体系
  14. molten php 上传,molten:PHP 应用透明链路追踪工具
  15. 浅尝 | 从 0 到 1 Vue 组件库封装
  16. WPF UnhandledException
  17. 黑苹果open core引导 选择系统界面黑屏,但是可以盲操作左右移动和回车,进度条第一阶段没有苹果logo
  18. 服装企业在饱和的情况下,如何避免交期延误?
  19. 数据中台(元数据篇)
  20. R语言ggplot2优雅的绘制环状云雨图

热门文章

  1. git如何不提交后缀_GitLab后缀配置邮件不发送
  2. Inconvenient Pairs(线段树/二分)
  3. eBay教程--eBay标题如何进行撰写
  4. 自制炒股盯盘神器——python实现(2)
  5. java点名代码滚动_随机点名的java实现(版本一)
  6. 带你了解IP地址的分类与子网划分
  7. 脑机接口 脑电波分类_脑机接口的商业应用和脑数据的重要性
  8. 用IP地址反查主机名
  9. matlab如何将三维转为二维_求助,二维图像如何绕轴旋转成为三维图像
  10. 饥荒服务器linux,搭建饥荒服务器