【发布时间】:2018-06-21 21:44:31
【问题描述】:
如果将受密码保护的 .ppt 文件传递到 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")
我尝试了password_dialog.NetUICtrlNotifySink.Click(),但没有任何反应。有什么想法吗?
【问题讨论】:
-
你使用的是默认
Application(backend="win32")吗? -
@VasilyRyabov 我不是,所以我试过了,但它产生了相同的控制标识符列表。
-
是的,因为它是默认后端。但是还有一个
backend="uia"可能会产生另一个标识符列表。你试过了吗? -
我建议对所有 MS Office 产品使用
backend="uia"。它应该会看到更多控件。 -
做到了。我切换并能够找到“取消”按钮并单击它。谢谢!