pywinauto
1.pywinauto的环境安装
(1)在线安装,在dos命令框输入pip install pywinauto 进行安装
(2)离线安装
-
下载压缩包 在官网https://pypi.org/下载
-
解压压缩包,解压之后为pywinauto-0.6.8,放到python的安装目录下,在dos命令,进行安装进入安装路径;C:\Python37\pywinauto-0.6.8 然后输入python setup.py install
2.pywinauto打开指定的应用程序
效果如图所示:
代码如下:
from pywinauto.application import Application
#打开指定的应用程序
#1.打开window自带的应用:记事本
app = Application(backend="uia").start("notepad.exe")
#2.打开任意一个应用程序(输入要打开的应用程序的exe文件的路径,就可以打开此应用程序)
# app = Application(backend="uia").start(r"D:\Program Files\PremiumSoft\Navicat Premium\navicat.exe")
#启动qq
# app = Application(backend="uia").start(r"D:\Program Files (x86)\Tencent\QQ\Bin\QQSclauncher.exe")
3.pywinauto连接已经打开的应用程序
navicat.exe
- 通过进程号去进行连接
在任务管理器里查看应用程序的进程号,这里以Navicat为例:
此进程号为7908
然后通过代码实现:
from pywinauto.application import Application
#通过pywinauto去连接已经打开的应用程序
#通过进程号去进行连接
app = Application("uia").connect(process=7908)
print(app)
运行此代码,可打开navicat
- 通过窗口句柄进行连接
需要百度下载viewWizard句柄查看工具
https://download.csdn.net/download/guiyin1150/12825818
打开效果如下:
通过窗口句柄打开navicat,代码如下:
from pywinauto.application import Application
#通过pywinauto去连接已经打开的应用程序
#通过进程号去进行连接
# app = Application("uia").connect(process=7908)
# print(app)
#通过窗口句柄进行连接
app = Application("uia").connect(handle=459518)
print(app)
4.如何选择应用程序的窗口
navicat.exe
- 根据窗口标题或类名选择
dlg = app[窗口类名/标题] - 根据窗口类名选择窗口
dlg = app.窗口类名
代码如下:
from pywinauto.application import Application
import time
#启动navicat
app = Application("uia").start(r"D:\navicat\navicat.exe")
#方式一,使用类名选择窗口
# dlg = app["TNavicatMainForm"]
#通过窗口标题去选择窗口
dlg = app["Navicat Premium"]
#方式二 app.窗口类名(不推荐)
dlg = app.TNavicatMainForm
# time.sleep(4)
# #打印窗口中的所有控件
# dlg.print_control_identifiers()
5.窗口控件基本属性方法
from pywinauto.application import Application
import time
# 启动navicat
app = Application("uia").start(r"D:\navicat\navicat.exe")
# 选择窗口
dlg = app["Navicat Premium"]
print("nihao")
menu = dlg['Menu']
# print(menu.print_control_identifiers())
file = menu.child_window(title="文件")
print(dlg.wrapper_object())
print(menu.wrapper_object())
# print(file.wrapper_object())
#dir :查看对象所支持的方法
print(dir(dlg.wrapper_object()))
#控件的文本内容获取:texts
#获取子元素
print(dlg.children())
#获取菜单的子元素
print(menu.children())
#获取控件的类名
print(menu.class_name())
#获取控件的属性,返回的字典
print(menu.get_properties())
6.窗口及控件截图处理(待续。。。)