说明:

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中 是什么运算符_Python 运算符

    Python 运算符 什么是运算符? 本章节主要说明Python的运算符.举个简单的例子4 +5 = 9. 例子中,4和5被称为操作数,"+"号为运算符. Python语言支持以下 ...

  2. python中的元类_python中的元类

    类也是对象,但是类有创建对象的能力 动态创建一个类: classmonkey():defbanana(self):print 'banana!' defapple(self):print 'i wan ...

  3. python中chr的用法_python中chr()函数和ord()函数的用法

    原博文 2018-06-11 21:52 − 一,chr()函数 格式:Chr(<数值表达式>) 说明:函数返回值类型为String,其数值表达式值取值范围为0~255. 例如:Print ...

  4. python中csv文件操作_python中操作csv文件

    python中操作csv文件 读取csv improt csv f = csv.reader(open("文件路径","r")) for i in f: pri ...

  5. python中for循环缩进_Python减少循环层次和缩进的技巧分析

    本文实例分析了Python减少循环层次和缩进的技巧.分享给大家供大家参考,具体如下: 我们知道Python中冒号和缩进代表大括号,这样写已经可以节省很多代码行数,但是可以更优化,尽可能减少循环的层次和 ...

  6. python中的下划线_Python中的下划线详解

    这篇文章讨论Python中下划线_的使用.跟Python中很多用法类似,下划线_的不同用法绝大部分(不全是)都是一种惯例约定. 一. 单个下划线直接做变量名(_) 主要有三种情况: 1. 解释器中 _ ...

  7. python中函数的作用域_Python中的函数作用域

    在python中,一个函数就是一个作用域 name = 'xiaoyafei' def change_name(): name = '肖亚飞' print('在change_name里的name:', ...

  8. python中的正则表达式语法_Python基础教程之正则表达式基本语法以及re模块

    什么是正则: 正则表达式是可以匹配文本片段的模式. 正则表达式'Python'可以匹配'python' 正则是个很牛逼的东西,python中当然也不会缺少. 所以今天的Python就跟大家一起讨论一下 ...

  9. python中time的用法_python中的计时器timeit的使用方法

    本文介绍了python中的计时器timeit的使用方法,分享给大家,具体如下: timeit 通常在一段程序的前后都用上time.time(),然后进行相减就可以得到一段程序的运行时间,不过pytho ...

  10. python中x y表示_Python中表达式x += y和x = x+y 的区别详解

    前言 本文主要给大家介绍的是关于Python中表达式x += y和x = x+y 区别的相关内容,分享出来供大家参考学习,下面来看看详细的介绍: 直接看下面代码: x +=y In [66]: id( ...

最新文章

  1. 不删除文件,清空文件内容命令
  2. LibLinear(SVM包)使用说明之(一)README
  3. Mac OS X中配置Apache
  4. 【转】Microsoft Graph Web应用程序极致开发体验
  5. python 基因序列提取_科学网—简单的Python脚本提取对应位置基因序列(fasta文件) - 王彬忠的博文...
  6. mysql-5.1.73-8.el6_在centos中安装mysql详细步骤说明
  7. 机器学习1.1--模型和代价函数
  8. 泽元网站内容管理系统 (简称ZCMS)
  9. Qt4_与主线程通信
  10. 对聊天室项目的NABCD的分析
  11. 调度算法-时间片轮转+例题详解
  12. 项目案例:浙江宁波江北区道路照明智慧化改造见成效
  13. 伯朗特机器人编程语言_机器人十大流行编程语言
  14. 只要7步,就能将任何魔方6面还原(留着以后教孩子玩
  15. Scarpy源码分析6
  16. Java学习之AWT绘图“奥运五环”
  17. 趋势科技移动客户端病毒报告
  18. android堆内存解析,heapsnap HeapSnap 是一款针对 Android 进程堆内存进行追踪、定位,以便查出泄露位置的工具 @codeKK c开源站...
  19. 一步控制台编译java_在控制台运行一个 Java 程序 Test . class ,使用的命令正确的是( )_学小易找答案...
  20. python判断是否为整数的函数_实现函数 isInteger(x) 来判断 x 是否是整数

热门文章

  1. 如何将文件或文件夹加入杀毒软件白名单步骤
  2. 金融衍生品数据分析_大数据_numpy,matplotlib,pandas学习
  3. 需求调第四篇--常用的调研工作方法
  4. 【无标题】工商银行科技菁英岗笔经面经
  5. OKR最新模板推荐,生产研发团队如何使用OKR工具?
  6. php获取所有微信号,PHP 微信公众号开发 - 获取用户信息
  7. 密歇根州立大学被黑 个人信息和社保号码被盗
  8. 计算机相关的oa资源,计算机类OA期刊搜集与分析.pdf
  9. 2022华为杯研赛E题草原放牧策略研究代码+思路
  10. Qt QLabel的修改形状显示圆形