引言:
我们上章节中打开了一个应用程序后,并打印了所有的控件信息,这些对于工具无法定位到的控件有很好的协助作用(当然这个可以作为主要的查找控件的用法,也可以辅助使用,我一般是把这个作为辅助使用)
定位控件的工具有很多种,这里推荐平时我使用的一种工具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()
这里是因为工具无法准确提供信息,我们就使用其自带的打印信息直接套用
总结:
这一章节我们做的就是打开应用程序后窗口类的各项操作,打开菜单栏下的任意一项菜单的操作。
下一章节我们继续讲解对某一个菜单项下的子菜单的操作,点个关注,不迷路,谢谢大家!