PyWinAuto 记事本自动化示例与 'reallife' 示例

PyWinAuto automation of notepad example vs 'reallife' example

我需要做的是单击一个菜单项并加载一个文件。喜欢记录良好的记事本示例,它是这样的...

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()

然后在关闭对话框之前,此调用后不会执行任何代码