python - 记事本示例与“现实生活”示例的 PyWinAuto 自动化
问题描述
我需要做的是单击一个菜单项并加载一个文件。喜欢有据可查的记事本示例,它是这样的......
from pywinauto import Application
app = Application (backend="uia").start("notepad.exe")
app.UntitledNotepad.menu_select("File->SaveAs")
Sub=app.UntitledNotepad.child_window(title_re="Save As", class_name="#32770")
Sub.FileNameCombo.type_keys("temp_12345.txt")
效果很好。但是,当我为我的应用程序调整此代码并尝试运行 menu_select 时,会引发“AttributeError”异常。我相当确定这是因为我的应用程序中的菜单条属于 uia_controls.MenuWrapper 类型,并且不支持 menu_select
我尝试了一种不同的方法 - 如下所示
app = Application(backend='uia').start(r"C:\Program Files (x86)\myapplication.exe")
time.sleep(1)
win = app.MyApplication
win['File'].select() # exapnd submenu
#Added AFTER I asked the question - i finally worked it out...
sub = win['File']
loadConfigMenuItem = (sub.children()[0])
loadConfigMenuItem.click_input() #print statement is executed
#loadConfigMenuItem.select() #print statement is NOT executed until I close the dialog box
print("If this prints, then I am a happy Man")
这将展开文件菜单。但是,从此时起,我无法访问此菜单的子元素。有什么想法吗???
解决方案
我回答了我自己的问题。看代码清单,特别是
loadConfigMenuItem.click_input()
这里的关键是单击菜单项并继续执行,从而使我能够获得对单击菜单项后出现的对话框的引用
相反,如果你要使用
loadConfigMenuItem.select()
然后在此调用之后不执行任何代码,直到对话框关闭
推荐阅读
- php - 需要优化:使用正则表达式使用可选和可重复的模式重新格式化字符串
- angular - 对话框上的 Primeng 菜单
- powershell - 在 Powershell 中使用相对路径时“不支持给定路径的格式”
- javascript - 更改移动设备上的传单图层控制图标?
- c# - 在 linux 中处理 memoryMappedFile 的异常
- freemarker - freemarker 是否为太大的 CSV 文件做好了准备?
- javascript - Phaser 3 this.scene 在回调中未定义
- openlayers - Openlayers ol-ext 为圆环图添加填充颜色
- php - PHP Datetime 对象和 strtotime 的时区和时间戳不正确
- go - 从 net tcp 连接获取 IPv4 地址