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()
然后在关闭对话框之前,此调用后不会执行任何代码
我需要做的是单击一个菜单项并加载一个文件。喜欢记录良好的记事本示例,它是这样的...
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()
然后在关闭对话框之前,此调用后不会执行任何代码