python windows自动化库_Python 实现 Windows 程序自动化 :pywinauto-程序员宅基地

技术标签: python windows自动化库  

和大家一起聊聊如何使用python做Windows

一、环境安装

​ 使用python实现来做PC端自动化,前提是先安装好python,那么还需要用到一个第三方库:

pip install

二、使用说明

安装好了之后,关于使用说明大家可以参照官方文档上的说明内容翻译如下:

就是说在我们安装好Pywinauto之后,首先要确定哪种可访问性技术(pywinauto的backend)可以用于我们的应用

Win32 API (backend="win32") 默认backend

MS UI Automation (backend="uia")

如果您不能确定程序到底适用于那种backend,可以借助于GUI对象检查工具来做,常用的检查工具有Inspect.ex,Spy++ 等,这个不做过多介绍,大家自行学习和下载,使用很简单,也非常便捷。

四、快速入门

在安装好环境之后,并且确定了应用程序适用的backend,那么接下来我们就可以使用Pywinauto这个模块来对应用程序进行自动化操作了

1、连接到应用程序这边以window自带的计算器程序作为案例,给大家做讲解

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

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

from pywinauto import application

# 方式一:创建应用程序时可以,指定应用程序的合适的backend,start方法中指定启动的应用程序

app = application.Application(backend='uia').start('notepad.exe')

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

from pywinauto import application

# 方式二:查看要打开的程序进程号,通过process指定进程号连接

app = application.Application().connect(process=19035)

运行以上代码,就会自动打开记事本记事本,如下:

::__IHACKLOG_REMOTE_IMAGE_AUTODOWN_BLOCK__::0

2、窗口选择

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

# 方式一 :不适用于窗口名为中文的

wind_1 = app.窗口名

# 方式二 :窗口名可以为中文

wind_2 = app["窗口名"]

# 案例使用:选择上面打开的计算器程序窗口

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

3、控件操作

程序窗口中的内容,把它称之为控件,我们要对这个窗口的内容进行操作,就需要选择到对应的控件,

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

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

打印出来的结果如下:

::__IHACKLOG_REMOTE_IMAGE_AUTODOWN_BLOCK__::1

上面打印出来的内容分别对应窗口种,选择控件

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

# 选择控件的方法

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

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

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

内容输入:

在上面选择到编辑窗口之后,我们就可以进行内容输入了,内容输入的方法:type_key():

# 在编辑栏种输入内容

edit.type_keys("柠檬班")

edit.type_keys("python自动化")

edit.type_keys("musen")

运行结果如下:

::__IHACKLOG_REMOTE_IMAGE_AUTODOWN_BLOCK__::2

4、键盘操作

输入完上述内容之后,接下来我们要修改编辑框中的内容,

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

pywinauto.keyboard.send_key

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

# 导入模块

from pywinauto.keyboard import send_keys

# 全选(ctrl+A)

send_keys("^a")

# 复制(ctrl+C)

send_keys("^c")

# 粘贴(ctrl+V)

send_keys("^v")

# 回车键

send_keys("{VK_RETURN}")

# 粘贴(ctrl+V)

send_keys("^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

更多的键盘操作大家可以参考官网文档

5、鼠标操作

pywinauto. mouse

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

鼠标移动:move方法

move(coords=(x轴坐标,y轴坐标))。

缓慢移动鼠标案例。

for i in range(10):

x = 10 * i

y = 10 * i

time.sleep(0.5)

# 移动鼠标

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/weixin_39747577/article/details/110758903

智能推荐

android 缓存一个对象,android – PendingIntents继续缓存同一个对象-程序员宅基地

文章浏览阅读76次。嗯,我想我找到了一些东西:我放置了BroadcastReceiver(ProximityAlerReceiver),用于检测LocationListener.class所在的同一类(MyCarTracking.class)中的邻近警报.这个,提供对新的位置更新的即时访问,创建包含在要向BroadcastReceiver触发的新pendingIntent中的新意图(仅当满足接近标准时).flags:..._android view缓存用的同一个对象

极域电子教室64位破解版|极域电子教室软件64位破解版下载v6.0_极域电子教室 64位 v10-程序员宅基地

文章浏览阅读3.4w次,点赞5次,收藏26次。点击下载出处:极域电子教室系统 v6.0破解版极域电子教室系统破解版是一款用于师生教学的优秀软件,可以将老师的电脑与学生的电脑相互连接,处于一个局域网内,老师可以控制学生的电脑,监控学生的屏幕,也可以及时将学生的问题予以反馈,当然监控并不是目的,目的是让学生能够更好参与教学的过程,并且通过极域电子教室系统破解版来完成互动,如答题,提问,屏幕广播等。不论是小课堂还是大课堂使用极域电子教室系统破解版都..._极域电子教室 64位 v10

IDEA设置按键提示 Ctrl+p_ideactrl+p没有显示-程序员宅基地

文章浏览阅读4.4k次。Main menu > View > Parameter Info _ideactrl+p没有显示

HTML+SSM实验室预约管理系统-计算机毕业设计源码99299_网上预约系统收集html-程序员宅基地

文章浏览阅读73次。管理员:记录管理员的登录信息。包括用户名,密码,权限等数据项。教学实验室:存储各种实验室信息。包括实验室编号、实验室名称、可容纳人数、实验室设备、已预约时间等数据项。教师用户:存储用户的教师信息。包括教师用户的教师工号、教师姓名、审核状态、用户ID等数据项。教师预约:存储用户的教师预约。包括教师预约的实验室编号、实验室名称、教师、教师姓名、使用时间、预约用途、审核状态、审核回复等数据项。学生用户:存储用户的学生用户信息。包括学生用户的学号、学生姓名、班级名称、审核状态等数据项_网上预约系统收集html

热释电探测器多用在_Light |结合光伏效应和辐射热效应的多功能光电探测器-程序员宅基地

文章浏览阅读952次。近日,中国科学院上海技术物理研究所的研究团队构建了一类低维半导体和二氧化钒的异质结,该异质结将光伏效应(Photovoltaic Effect)和辐射热效应(BolometricEffect)相结合,可以实现多种功能模式的光电探测。相关研究成果以“A Versatile Photodetector Assisted by Photovoltaic and Bolometric Effe..._bolometric effect

区块链基础知识7-比特币挖矿原理/工作量证明-程序员宅基地

文章浏览阅读827次,点赞9次,收藏8次。在前面《我们了解到记账是把交易记录、交易时间、账本序号、上一个Hash值等信息计算Hash打包的过程。我们知道所有的计算和存贮是需要消耗计算机资源的,既然要付出成本,那节点为什么还要参与记账呢?在中本聪(比特币之父)的设计里,完成记账的节点可以获得系统给与的一定数量的比特币奖励,这个奖励的过程也就是比特币的发行过程,因此大家形象的把记账称为“挖矿”,本文将详细讨论这个过程。

随便推点

python 实现AES-CMAC算法验证_aescmac算法验证,2024年最新网络安全技术类校招面试题汇总-程序员宅基地

文章浏览阅读538次,点赞9次,收藏19次。这就是基于AES的CMAC算法,多用于消息数据的正确性认证,生成的认证码,叫作message authentication code,消息认证码,简称MAC。

Springboot计算机毕业设计微信小程序的石家庄旅游云平台【附源码】开题+论文+mysql+程序+部署-程序员宅基地

文章浏览阅读594次,点赞24次,收藏13次。本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。研究背景在信息化与数字化高速发展的今天,旅游业作为国民经济的重要支柱产业,其信息化水平和服务质量直接影响着行业的发展与游客的满意度。石家庄作为河北省的省会城市,拥有丰富的旅游资源和深厚的文化底蕴,但传统的旅游服务模式已难以满足游客日益增长的个性化需求。因此,构建一款集景点展示、美食推荐、酒店预订等功能于一体的旅游云平台,对于提升石家庄旅游业的信息化水平和服务质量具有重要意义。微信小程序作为一种轻量级的应用形态,无需下载安

利用PYTHON爬虫,Xpath路径正确但是返回数据为空_lxml xpath方法没有返回值-程序员宅基地

文章浏览阅读1.1k次,点赞24次,收藏20次。7.34万741万_lxml xpath方法没有返回值

Java抽象类接口、内部类题库_编写程序描述兔子和青蛙。分析兔子和青蛙的共性-程序员宅基地

文章浏览阅读4.6k次,点赞2次,收藏7次。一、 选择题1.Person类和Test类的代码如下所示,则代码中的错误语句是( C )。(选择一项) public class Person {public String name;public Person(String name) {this.name = name;_编写程序描述兔子和青蛙。分析兔子和青蛙的共性

linux服务器部署laravel出现putenv() has been disabled for security reasons_laravel putenv() has been disabled for security re-程序员宅基地

文章浏览阅读652次。putenv() has been disabled for security reasons进入www/serve/php/72/etc找到disable_functions后面的函数,删除 putenv()如果报错The Process class relies on proc_open, which is not available on your PHP installation.删除proc_open..._laravel putenv() has been disabled for security reasons

Android studio创建新的工程时没有语言选项_android studio新建项目没有语言选项-程序员宅基地

文章浏览阅读7k次,点赞13次,收藏10次。用新的Android studio创建工程时有时候会遇到没有语言选项,默认创建的工程是kotlin语言。这时我们可以创建别的工程比如Empty view Activity。可以看到这时候就有语言选项。_android studio新建项目没有语言选项