Python自动化操作pywinauto_python pywinauto-程序员宅基地

技术标签: python  自动化  

1、连接到应用程序

连接应用程序,首先需要用到pywinauto.application.Application()来创建一个应用程序对象,然后再连接到应用程序,有如下两种方法:

方式一:直接通过start方法打开操作的应用程序,

from pywinauto import application
# 方式一:创建应用程序时可以,指定应用程序的合适的backend,start方法中指定启动的应用程序
# 对于Windows中自带应用程序,直接执行,对于外部应用应输入完整路径
app = application.Application(backend='uia').start(r'd:/notepad.exe')

方式二:连接已经打开应用程序,可以通过connect连接到指定的应用程序

from pywinauto import application

# 方式二:通过process指定进程号连接 # 通过handle 指定句柄号 连接
app = application.Application('uia').connect(process=4035)
app = application.Application('uia').connect(handle=123555)

2、窗口选择

打开窗口之后,要操作该窗口的话,那么就的先选中这个窗口,关于窗口的选择有以下几种方式

# 方式1 :窗口名可以为中文
wind_2 = app["窗口标题"]
wind_2 = app["窗口类名"]

# 方式2 :不适用于窗口名为中文的
wind_1 = app.窗口标题​
wind_1 = app.窗口类名​

3.窗口操作

#窗口最大化
wind.maximize()
#窗口最小化
wind.minimize()
#窗口恢复正常大小
wind.restore()
#关闭窗口
wind.close()
#获取窗口坐标(左,顶,右,下)
wind.rectangle()

4、控件操作

我们可以通过print_control_identifiers()这个方法,来获取这个窗口下的直接子控件,如下:

app['无标题 - 记事本'].print_control_identifiers()

        关于控件选择的方法有好几种,最简单的方法如下:

1

2

3

4

# 选择控件的方法

wind_calc = app["窗口名"]["控件名"]

# 案例操作:选择编辑窗口

edit = app['无标题 - 记事本']['Edit']

 内容输入的方法:type_key()

1

2

3

4

# 在编辑栏种输入内容

edit.type_keys("柠檬班")

edit.type_keys("python自动化")

edit.type_keys("musen")

 5、键盘操作

通过键盘完成以下操作:全选(ctrl+A) 复制(ctrl+C) 粘贴(ctrl+V)

pywinauto模拟操作键盘,需要使用到 pywinauto.keyboard.send_keys这个方法 

from pywinauto.keyboard import send_keys​

send_keys("^a")​    # 全选(ctrl+A) 

send_keys("^c")​    # 复制(ctrl+C)

send_keys("^v")​    # 粘贴(ctrl+V)

send_keys("{VK_RETURN}")​# 回车键

send_keys("^v")     # 粘贴(ctrl+V)

常见的按键操作

字母按键用按键小写字母表示

常用的一些按键

ESC键:VK_ESCAPE
回车键:VK_RETURN
TAB键:VK_TAB
Shift键:VK_SHIFT
Ctrl键:VK_CONTROL
Alt键:VK_MENU
按键修饰符

# 对于一些常用的按键,可以通过修饰符来表示,使用的时候比较方便
'+': {VK_SHIFT}
'^': {VK_CONTROL}
'%': {VK_MENU} Alt键
# 上面:全选(ctrl+A) 复制(ctrl+C) 粘贴(ctrl+V)就使用的是修饰符^来代表ctrl
更多的键盘操作大家可以参考官网文档

 6、鼠标操作

pywinauto. mouse

pywinauto操作鼠标,需要导入mouse模块,mouse模块中设置了一系列的鼠标操作事件

鼠标移动:move(coords=(x轴坐标,y轴坐标))

鼠标点击:click

# button指定左击还是右击,coords指定鼠标点击的位置​

# 3.1、鼠标单击

# 指定位置,鼠标左击

mouse.click(button='left', coords=(40, 40))

# 指定位置 鼠标右击

# mouse.click(button='right', coords=(100, 200))

# 3.2 鼠标双击

mouse.double_click(button='left', coords=(140, 40))​

# 4 按下鼠标:press

# 将属性移动到(140,40)坐标处按下

mouse.press(button='left', coords=(140, 40))

# 5 释放鼠标:repleace

# 将鼠标移动到(300,40)坐标处释放,

mouse.release(button='left', coords=(300, 40))​

# 6、右键单击指定坐标

mouse.right_click(coords=(400, 400))​

# 7、鼠标中键单击指定坐标(很少用的到)

mouse.wheel_click(coords=(400, 400))​

# 8 滚动鼠标

# coords:指定鼠标的坐标位置。

# wheel_dist指定鼠标滚轮滑动的次数,正数往上,负数往下。

mouse.scroll(coords=(1200,300),wheel_dist=-3)

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/cangxiao/article/details/128521967

智能推荐

java发送邮件字体_JavaMail邮件发送-发送非纯文本邮件-程序员宅基地

文章浏览阅读506次。发送纯文本文件非常简单,基本上拷贝别人的代码做下业务处理即可但是发送不是纯文本的邮件时有点不同,为了简单介绍,就一步一步来其实就是发送的内容需要构建一个消息体然后设置消息提的内容,内容就是HTML代码,这样接收者看到的就是带有样式的邮件内容你也可以增加附件,增加背景音乐等我直接贴代码:packagecom.mail;importjava.util.Date;importjava.util.P..._java 发送邮件 字体红色

网页设计师和开发人员的34个参考手册-程序员宅基地

文章浏览阅读44次。对于一个网页设计师来说,大部分时间都花在不同的软件环境下的测试,因此,参考手册对他们有很大的帮助。在这篇文章中,我提出了34个重要的备忘单,帮助开发人员在开发的时候遇到问题能够及时解决WordPress1. Liquidicity – WordPress help sheet2. WP-The Loop3. WordPress Theme Development Check L...

vue 计算属性传参-程序员宅基地

文章浏览阅读523次。你可以让计算属性返回一个函数,然后在模板中作为方法调用这个函数并传入需要的参数。_vue 计算属性传参

.htm和.html的区别_htm html-程序员宅基地

文章浏览阅读4.8k次。HTML: html was the original extension for HTML pages on Unix Web hosting machines. HTM: htm was created by Windows/DOS because of its requirement for 3 character extension_htm html

Ghost-free High Dynamic Range Imaging with Context-aware Transformer-程序员宅基地

文章浏览阅读90次。多帧高动态范围成像(High Dynamic Range Imaging, HDR)旨在通过合并多幅不同曝光程度下的低动态范围图像,生成具有更宽动态范围和更逼真细节的图像。如果这些低动态范围图像完全对齐,则可以很好地融合为HDR图像,但是,实际拍摄到的图像容易受到相机、物体运动的干扰,三张低动态范围图像往往不能很好地得到对齐,直接对三图像做融合的话,所生成的图像容易产生伪影、重影。,本文提出了一种新的上下文感知视觉转换器(CA-VIT)用于高动态范围成像。_ghost-free high dynamic range imaging with context-aware transformer

常用总结 速率、标准、传输介质与物理构型_常见的网络传输介质速度-程序员宅基地

文章浏览阅读487次,点赞2次,收藏2次。计算机网络_常见的网络传输介质速度

随便推点

ISP流程概述-程序员宅基地

文章浏览阅读1.2k次。一、概述 ISP(Image Signal Processor), 即图像信号处理, 主要作用是对前端图像传感器输出的信号做后期处理, 依赖于 ISP 才能在不同的光学条件下都能较好的还原现场细节。Cmos YUV sensor 的 ISP 处理流程如图所示:景物通过 Lens 生成的光学图像投射到 sensor 表面上, 经过光电转换为模拟电信号, 消噪声后经过 A/D 转换后变..._isp流程

堆取料机防碰撞系统促进港口物料搬运效率进行提档升级_港口取料机防碰撞方法-程序员宅基地

文章浏览阅读693次。第1章 系统简介 概述 随着水路运输业的快速发展,现代港口规模和吞吐量不断增长,港口各种装卸设备数量不断增加,如何高效可靠使用这些装卸设备是各港口单位关心的问题。港口装卸设备中主要的斗轮堆取料机又称悬臂式堆取料机,是散货堆场作业的核心设备。它是堆取料合一的机械,即是一种挖取和堆存煤炭、矿石、砂石等松散物料的高效率机械。它不仅适用于电厂,而且在码头、港口也很适用,大多数的转运煤及松散物料..._港口取料机防碰撞方法

SQLAlchemy 第一篇_sqlalchamy with-程序员宅基地

文章浏览阅读566次,点赞11次,收藏9次。在下面的示例中,上下文管理器提供了数据库连接,并且还构建了事务内部的操作。Python DBAPI 的默认行为包括事务始终在进行中;当连接范围被释放时,会发出 ROLLBACK 来结束事务。当我们想要提交数据时,我们通常需要调用Connection.commit()方法,可以隐式开启一个事务。并且执行正常后,会自动提交。如果有异常发送,则会回滚。此处我们以pymysql为mysql的数据库驱动。_sqlalchamy with

linux装系统出现boot,Linux系统安装时提示boot efi 没有分配空间的解决办法-程序员宅基地

文章浏览阅读3.6k次。怎么解决 boot/efi 没有分配空间的问题呢。某些机器上,特别是有双硬盘的电脑,在装 Linux 双系统时,经常会提示 boot/efi 没有分配空间。有时候,明明已经分配了,还会提示没有分配,如何解决呢。1、启动机器时,按下 F12,进入 BIOS有的品牌的机器,可能是按F2、DEL、ESC等。2、进入BIOS设置界面后,按左右方向键←→,选择【启动】3、再按上下方向键↑↓,选择【Boot ..._安装linux系统提示boot:

有关数仓增量和全量同步的一些思考_数据向数仓同步数据需要注意的-程序员宅基地

文章浏览阅读2.4k次。背景相信很多公司都是基于Hive做的数仓,从而对外提供数据服务。这里只讨论离线数仓,做数仓必然离不开对大量数据的ETL处理工作。目前的ETL种类繁多,可选择的工具也有很多,比如使用Sqoop, DataX做离线的T+1数据同步, Spark或者Flink做T+0的实时数据同步等。目前有很多公司业务是T+1的,每天需要同步昨天的业务库(MySQL、mongodb等)的数据到Hive数据仓库中,..._数据向数仓同步数据需要注意的

python cookbook 中文版 第 3 版-《Python Cookbook》第三版中文版-程序员宅基地

文章浏览阅读1.2k次。人生苦短,我用 python!我一直坚持使用 python3,因为它代表了python的未来。虽然向后兼容是它的硬伤,但是这个局面迟早会改变的, 而且python3的未来需要每个人的帮助和支持。 目前市面上的教程书籍,网上的手册大部分基本都是2.x系列的,专门基于3.x系列的书籍少的可怜。最近看到一本《Python Cookbook》3rd Edition,完全基于python3,写的也很不错。 ..._pythoncookbook第三版电子书

推荐文章

热门文章

相关标签