说明:

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里的shell是什么_python中的shell操作

    http://blog.csdn.net/meng_tianshi/article/details/6682317 首先介绍一个函数: os.system(command) 这个函数可以调用shell ...

  2. python里的属性是什么_python属性 python 里的属性是什么意思?

    python 里的属性是什么意思? 刚开始看python教程,不是很明白."属性,属性方法,方法"这些是什么意你说的是对象吧 Python是面向对象的语言,在python中一切皆对 ...

  3. python中乘号可以省略吗_python *乘号在命令行中为什么报错

    环境 Mac Os X 10.9 python 2.7 实现功能 命令行传入公式,输出结果 出错原因 '*' 号把整个目录下的文件都当作参数传入了 问题 如何正确传入 * 号? 操作 输入公式 '2 ...

  4. python里2f是啥意思_python中的format什么意思

    format函数 这是一种字符串格式化的方法,用法如str.format(). 基本语法是通过 {} 和 : 来代替以前的 % . 以下展示两种主要用法: (1)如:语句print("{:. ...

  5. python里dir是什么意思_python中dir什么作用

    python中dir的作用是:1.dir函数传入数据类型返回该数据类型的所有内置方法:2.dir函数传入模块名返回该模块的所有属性和方法. dir() 内置函数的作用 python 内置方法有很多,无 ...

  6. python里find是什么函数_Python find函数用法和概念

    原博文 2018-11-21 14:31 − 概念: Python find() 方法检测字符串中是否包含子字符串 str ,如果指定 beg(开始) 和 end(结束) 范围,则检查是否包含在指定范 ...

  7. python里object是什么类型_Python中的object这个叫做基类的类,它的属性和行为都有哪些?...

    声明:以下仅为个人学习Python过程中总结的比较自洽的理解,事实上Python面向对象模型可能没那么简单.经查阅,Python在以前的版本还有不继承自object的类,叫做经典类. 用dir(obj ...

  8. python里遍历筛选xml文件_python xml.etree.ElementTree遍历xml所有节点实例详解

    python xml.etree.ElementTree遍历xml所有节点 XML文件内容: 代码: #-*- coding: UTF-8 -*- # 从文件中读取数据 import xml.etre ...

  9. python里的关键字有哪些_Python中的yield关键字做了什么?

    Python中的yield关键字做了什么 要理解yield做了什么,就必须明白生成器(generators)为何物,而在明白生成器之前还要知道迭代器(iterables). 1.迭代器 当我们创建一个 ...

最新文章

  1. python测试rabbitmq的消息收发
  2. 如何跟踪session
  3. lotus表单域怎么获取视图结果_翻译案例 | 商业推广类文章怎么翻?如何修改译文?...
  4. 长能耐了?想造反了?你老婆没了.......
  5. HDU题目分类啊!!!
  6. ABAP 数值四舍五入函数
  7. MySQL中count(*)用法
  8. 两种方法解决tomcat的 Failed to initialize end point associated with ProtocolHandler [http-apr-8080]...
  9. toj 4611 Repairing a Road
  10. QT下信号与槽不在同一个线程中如何connect
  11. netty 学习 (1)
  12. allwinner h6 armv8 SylixOS 启动分析
  13. [软件应用]官方下载Nero-9.4.13.2d_update.exe迅雷竟也报毒
  14. 项目管理WBS工作分解如何做?【模板下载】
  15. udhcpc 后台运行的方法
  16. power design设计数据库
  17. python调用c++的方法,加速运算
  18. 【STM32】 STM32单片机IO引脚配置方式
  19. 常见关系型数据库(sql server/oracle)查询语句面试题
  20. 文件内容检索工具-FileLocator

热门文章

  1. 最好用的助眠好物,有效辅助睡眠的方法
  2. MATLAB中果蝇味道浓度判定函数,基于果蝇优化算法对栓接结合部间距的优化方法与流程...
  3. 蓝桥 外星日历 JAVA
  4. 如何(及时)清除电脑c盘的缓存文件
  5. 【CSDN|每日一练】幼稚班作业
  6. 第13周项目1 (1)
  7. 智能门锁“激战正酣”
  8. 数据库应用-E commerce管理
  9. 嵌入式机载软件安全性分析
  10. PICE(4):MongoDBStreaming - gRPC Protobuf conversion