Python 使用pywinauto单击对话框取消按钮

Python 使用pywinauto单击对话框取消按钮,python,windows,pywinauto,Python,Windows,Pywinauto,我遇到过这样的情况:如果有一个受密码保护的.ppt文件被传递到PowerPoint中,PowerPoint的自动化过程就会挂起。我使用pywinauto编写了一个脚本来检测何时发生这种情况,并连接到密码对话框,但我似乎无法让它单击取消按钮 以下是我在“输入密码”对话框中看到的控件标识符: NUIDialog - 'Password' (L649, T422, R999, B553) ['NUIDialog', 'Password', 'PasswordNUIDialog'] child_w

我遇到过这样的情况:如果有一个受密码保护的.ppt文件被传递到PowerPoint中,PowerPoint的自动化过程就会挂起。我使用
pywinauto
编写了一个脚本来检测何时发生这种情况,并连接到密码对话框,但我似乎无法让它单击取消按钮

以下是我在“输入密码”对话框中看到的控件标识符:

NUIDialog - 'Password'    (L649, T422, R999, B553)
['NUIDialog', 'Password', 'PasswordNUIDialog']
child_window(title="Password", class_name="NUIDialog")
   |
   | NetUIHWND - ''    (L657, T453, R991, B545)
   | ['NetUIHWND', 'PasswordNetUIHWND']
   | child_window(class_name="NetUIHWND")
   |    |
   |    | NetUICtrlNotifySink - ''    (L728, T495, R983, B510)
   |    | ['PasswordNetUICtrlNotifySink', 'NetUICtrlNotifySink']
   |    | child_window(class_name="NetUICtrlNotifySink")
   |    |    |
   |    |    | RICHEDIT60W - ''    (L728, T495, R983, B510)
   |    |    | ['PasswordRICHEDIT60W', 'RICHEDIT60W']
   |    |    | child_window(class_name="RICHEDIT60W")
   |    |
   |    | RICHEDIT60W - ''    (L728, T495, R983, B510)
   |    | ['PasswordRICHEDIT60W', 'RICHEDIT60W']
   |    | child_window(class_name="RICHEDIT60W")
   |
   | NetUICtrlNotifySink - ''    (L728, T495, R983, B510)
   | ['PasswordNetUICtrlNotifySink', 'NetUICtrlNotifySink']
   | child_window(class_name="NetUICtrlNotifySink")
   |    |
   |    | RICHEDIT60W - ''    (L728, T495, R983, B510)
   |    | ['PasswordRICHEDIT60W', 'RICHEDIT60W']
   |    | child_window(class_name="RICHEDIT60W")
   |
   | RICHEDIT60W - ''    (L728, T495, R983, B510)
   | ['PasswordRICHEDIT60W', 'RICHEDIT60W']
   | child_window(class_name="RICHEDIT60W")

我尝试执行一个
密码\u对话框。NetUICtrlNotifySink。单击()
,但什么也没发生。有什么想法吗?

我建议对所有MS Office产品使用
应用程序(backend=“uia”)
。它应该会看到更多控件。

您是否使用默认的
应用程序(backend=“win32”)
?@vasilyryyabov我没有,所以我尝试了它,但它会生成相同的控件标识符列表。是的,因为它是默认的后端。但是还有一个
backend=“uia”
可能会生成另一个标识符列表。您试过了吗?我建议对所有MS Office产品使用
backend=“uia”
。它应该能看到更多的控件,就是这样。我切换了,能够找到“取消”按钮并单击它。非常感谢。