Python的Windows GUI自动化之Pywinauto(四)

引言:

我们上章节中打开了一个应用程序后,并打印了所有的控件信息,这些对于工具无法定位到的控件有很好的协助作用(当然这个可以作为主要的查找控件的用法,也可以辅助使用,我一般是把这个作为辅助使用)

定位控件的工具有很多种,这里推荐平时我使用的一种工具Autoit

下载地址:
https://www.autoitscript.com/site/autoit/downloads/

下拉找到下载按钮并下载安装完毕
在这里插入图片描述

安装后找到此应用程序,并打开如图所示
在这里插入图片描述

当我们打开应用程序后,点击Finder Tool按钮,并长按拖拽到要寻找的应用控件上,如我们查到的Notepad++ 的控件信息了,还有打开的新的窗口的标题

在这里插入图片描述

实际代码操作:

1 获取连接的窗口,并对窗口操作

import psutil
from pywinauto import Application

for process in psutil.process_iter():
    try:
        processinfo = process.as_dict(attrs=['pid', 'name'])
        if processinfo['name'] == 'notepad++.exe':
            process.kill()
    except psutil.NoSuchProcess:
        pass

path = r'C:\Program Files (x86)\Notepad++\notepad++.exe'          #应用程序安装的路径
app = Application(backend='uia').start(path)

# 连接到Notepad++窗口
window = app["Notepad++"]     #使用定位软件定位到窗口信息

#  获取窗口的标题和文本内容
title = window.texts()[0]
print(title)
# text = window.window_text()

# 最大化窗口
# window.maximize()

# 最小化窗口
window.minimize()

# 还原窗口
# window.restore()

# 关闭窗口
# window.close()

# 设置窗口的大小和位置
# window.set_rect(100, 100, 800, 600)

2.获取菜单栏信息

先提供完整代码,后面逐一讲解:

path = r'C:\Program Files (x86)\Notepad++\notepad++.exe'          #应用程序安装的路径
app = Application(backend='uia').start(path)
# app['Notepad++'].print_control_identifiers()  #获取Notepad++ 界面所有的控件信息
#连接到Notepad++窗口
window = app["Notepad++"]
# 获取菜单栏所有信息
# window['应用程序Menu'].print_control_identifiers()
# window.Menu2.print_control_identifiers()
# window['应用程序'].print_control_identifiers()
window['应用程序Menu'].child_window(title="文件(F)").click_input()

打开Notepad++后 想对下面的这些菜单栏就行操作,这个时候使用autoit工具确无法定位怎么办? 那我们就可以使用打印控件的信息来定位了

在这里插入图片描述

代码如下:

path = r'C:\Program Files (x86)\Notepad++\notepad++.exe'          #应用程序安装的路径
app = Application(backend='uia').start(path)
# app['Notepad++'].print_control_identifiers()  
#获取Notepad++ 界面所有的控件信息,我们菜单栏的控件就是这里获取到的

这里我们获取所有的控件信息后,可以从中查询到对应的菜单栏的信息控件
在这里插入图片描述

然后获取菜单栏所有信息,使用的三个其中的一个都可以运行,使用方式为window[‘中文控件名字’]或者window.英文控件名 这个取决于你使用的中文的还是英文的控件名了

#连接到Notepad++窗口
window = app["Notepad++"]
# 获取菜单栏所有信息,
# window['应用程序Menu'].print_control_identifiers()
window.Menu2.print_control_identifiers()
# window['应用程序'].print_control_identifiers()

点击其中一个菜单下的子菜单项,就可以借助与上面控件打印出来的信息使用了(这是因为工具无法定位的情况下这样使用)

如点击文件代码:文件
在这里插入图片描述

window['应用程序Menu'].child_window(title="文件(F)").click_input()

工具能定位到控件信息的话就可以直接使用window[‘应用程序Menu’][“文件(F)”].click_input()

这里是因为工具无法准确提供信息,我们就使用其自带的打印信息直接套用

总结:

这一章节我们做的就是打开应用程序后窗口类的各项操作,打开菜单栏下的任意一项菜单的操作。

下一章节我们继续讲解对某一个菜单项下的子菜单的操作,点个关注,不迷路,谢谢大家!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

经历一个春

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值