pywinauto教程2
一、环境安装
1.命令行安装方法
pip install pywinauto==0.6.7
2.手动安装方法
安装包下载链接:
pyWin32: python调用windows api的库
https://sourceforge.net/projects/pywin32/files/pywin32/Build 220/
comtypes: COM接口的调度https://github.com/enthought/comtypes/releases
six: 用来兼容Python2和Python3的库
https://pypi.org/project/six/
Pillow:可选,用来做屏幕截图的
https://pypi.org/project/Pillow/2.7.0/
Pywinauto:PC端自动化工具
https://github.com/pywinauto/pywinauto/releases
解压缩后执行 python setup.py install
注:建议使用第一种命令行安装,方便。
3.环境检查
命令行中打开python解释器,运行以下代码,windows自带的记事本会被启动,若无报错,则证明pywinauto已安装成功。
|
1
2
|
from pywinauto.application import Applicationapp = Application(backend="uia").start("notepad.exe") |
二、封装函数
# -*- coding: utf-8 -*-
import time,os
from pywinauto import application '''
安装程序中,键盘快捷键对应码表如下:
SHIFT +
CTRL ^
ALT %
空格键 {SPACE}
BACKSPACE {BACKSPACE}、{BS} or {BKSP}
BREAK {BREAK}
CAPS LOCK {CAPSLOCK}
DEL or DELETE {DELETE} or {DEL}
DOWN ARROW {DOWN}
END {END}
ENTER {ENTER} or ~
ESC {ESC}
HELP {HELP}
HOME {HOME}
INS or INSERT {INSERT} or {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}
+ {ADD}
- {SUBTRACT}
* {MULTIPLY}
/ {DIVIDE}
''' class Tool_Installer_Error(Exception): """Application has not been connected to a process yet""" pass # pragma: no cover class Tool_Installer(object):
'''
控件中有一个极其重要的方法wrapper_object()
如:object_func = dlg['Button1'].wrapper_object()
print(dir(object_func)) #打印控件所有可用的方法
'''
def __init__(self):
self.app_master = None
self.app_window = None
self.app_dlg = None def app_start(self,app_full_path,timeout=0.5):
print('start application')
if not os.path.exists(app_full_path):
raise Tool_Installer_Error("%s does not exists" %(app_full_path))
self.app_master = application.Application().start(app_full_path)
time.sleep(timeout) def app_connect(self,title_re,class_name,backend='win32',timeout=0.5):
print('get application')
self.app_window = application.Application(backend=backend).connect(title_re=title_re, class_name=class_name,timeout=timeout) def app_get_dlg(self,title):
print('get dialog on application')
self.app_dlg = self.app_window.window(title=title) #安装robot发现title_re参数失效 def app_get_all_widget(self):
print('get all widget on dialog')
widgets = self.app_dlg.print_control_identifiers()
return widgets def app_wait_button_active(self,widget_name):
print('wait for button active')
while not self.app_dlg[widget_name].is_enabled():
time.sleep(3) def app_widget_click(self,widget_name,timeout=5):
print('click button on %s' %(widget_name))
# 智能等待窗口部件出现,超时时间为5S
self.app_dlg[widget_name].wait(wait_for="visible", timeout=timeout)
self.app_dlg[widget_name].click() def app_widget_send_key(self,widget_name,key,timeout=5):
print('send %s on %s' %(key,widget_name))
# 智能等待窗口部件出现,超时时间为5S
self.app_dlg[widget_name].wait(wait_for="visible", timeout=timeout)
self.app_dlg[widget_name].type_keys(key) def app_widget_get_text(self,widget_name):
object_func = self.app_dlg[widget_name].wrapper_object()
return object_func.window_text() if __name__ == '__main__':
#安装robotframework
robot_file_path = r'D:\software\robotframework-2.8.7.win32.exe'
robot = Tool_Installer()
app_master = robot.app_start(robot_file_path)
robot.app_connect('Setup','#32770')
robot.app_get_dlg('Setup')
robot.app_widget_send_key(widget_name='Button2',key='%N')
robot.app_widget_send_key(widget_name='Button3',key='%N')
robot.app_widget_send_key(widget_name='Button2',key='%N')
print(time.time())
print(robot.app_dlg.exists())
print(time.time())
robot.app_widget_send_key(widget_name='Button2',key='{ENTER}',timeout=60)
pywinauto教程2的更多相关文章
- pywinauto教程
转:pywinauto教程https://blog.csdn.net/weixin_40161673/article/details/83246861 ** 一.环境安装**1.命令行安装方法pip ...
- 【转】pywinauto教程
一.环境安装 1.命令行安装方法 pip install pywinauto==0.6.7 2.手动安装方法 安装包下载链接:pyWin32: python调用windows api的库https:/ ...
- 在中文windows下使用pywinauto进行窗口操作
这两天开始接触pywinauto,听说百度的自动化QA也用这个模块,于是来了兴趣,但网上的教程很少,而且基本上都是拿官方的notepad来说,首先中文菜单的支持是问题,其次各种操作也没有写清楚,阅读官 ...
- 原创-使用pywinauto进行dotnet的winform程序控制(一)
pywinauto自动化控制win32的ui的程序,网上有好多的教程.但是操作dotnet写的winform教程,就少之又少.今天我就来分享我的pywinauto操作dotnet的winform的研究 ...
- Angular2入门系列教程7-HTTP(一)-使用Angular2自带的http进行网络请求
上一篇:Angular2入门系列教程6-路由(二)-使用多层级路由并在在路由中传递复杂参数 感觉这篇不是很好写,因为涉及到网络请求,如果采用真实的网络请求,这个例子大家拿到手估计还要自己写一个web ...
- Angular2入门系列教程6-路由(二)-使用多层级路由并在在路由中传递复杂参数
上一篇:Angular2入门系列教程5-路由(一)-使用简单的路由并在在路由中传递参数 之前介绍了简单的路由以及传参,这篇文章我们将要学习复杂一些的路由以及传递其他附加参数.一个好的路由系统可以使我们 ...
- Angular2入门系列教程5-路由(一)-使用简单的路由并在在路由中传递参数
上一篇:Angular2入门系列教程-服务 上一篇文章我们将Angular2的数据服务分离出来,学习了Angular2的依赖注入,这篇文章我们将要学习Angualr2的路由 为了编写样式方便,我们这篇 ...
- Angular2入门系列教程4-服务
上一篇文章 Angular2入门系列教程-多个组件,主从关系 在编程中,我们通常会将数据提供单独分离出来,以免在编写程序的过程中反复复制粘贴数据请求的代码 Angular2中提供了依赖注入的概念,使得 ...
- Angular2入门系列教程1-使用Angular-cli搭建Angular2开发环境
一直在学Angular2,百忙之中抽点时间来写个简单的教程. 2016年是前端飞速发展的一年,前端越来越形成了(web component)组件化的编程模式:以前Jquery通吃一切的田园时代一去不复 ...
随机推荐
- webpack入门配置步骤详解
1.初始化 1.npm install webpack webpack-cli webpack-dev-server --g 全局安装必要的第三方插件 2.mkdir config dist src ...
- JAVA 网络编程 - 实现 群聊 程序
在实现 这个 程序之前, 我们 需要 了解 一些 关于 Java 网络 编程 的 知识. 基本 的 网络知识: 网络模型 OSI (Open System Interconnection 开放系统互连 ...
- 【CF1172E】Nauuo and ODT(Link-Cut Tree)
[CF1172E]Nauuo and ODT(Link-Cut Tree) 题面 CF 给你一棵树,每个节点有一个颜色. 定义一条路径的权值为路径上不同颜色的数量.求所有有向路径的权值和. 有\(m\ ...
- Python切片中的误区与高级用法
众所周知,我们可以通过索引值(或称下标)来查找序列类型(如字符串.列表.元组...)中的单个元素,那么,如果要获取一个索引区间的元素该怎么办呢? 切片(slice)就是一种截取索引片段的技术,借助切片 ...
- HashMap框架源码深入解读,面试不用愁
在Java Collections Framework的体系中中,主要有两个重要的接口,一个是List.Set和Queue所属的Collection,还有一个就是Map接口了.在上一篇文章中介绍了Li ...
- C++ 流插入"<<"和流提取">>"运算符的重载
01 流插入<<运算符的重载 C++ 在输出内容时,最常用的方式: std::cout << 1 <<"hello"; 问题: 那这条语句为什么 ...
- 0基础入门学习Python(第5章)
列表,元组和字符串 5.1 列表:一个打了激素的数组 有时候可能需要将一些相互之间有关联的数据保存在一起,这个就叫数组.Python将其称为列表. 5.1.1 创建列表 >>> [1 ...
- Windows下Python 3.6 安装BeautifulSoup库
- - 下载安装 安装方法如下: 到 - PIP安装 如果上一种方法安装不成功,可以用第二种方法,记住,Python3.6下是pip3. 安装方法如下: pip3 install beautifuls ...
- MES论坛
MES是智能制造的核心系统,是实现中国制造2025的关键应用系统.MES应用于车间执行层,中文为制造执行系统. 目前MES交流社区比较少,已有的都显得比较杂乱,所以新开了一个MES论坛地址为https ...
- Python—内置三大装饰器(@staticmethod、@classmethod、@property)
https://blog.csdn.net/weixin_42681866/article/details/83376484 https://blog.csdn.net/weixin_43265804 ...