正如我所见,WireShark 正在启动几秒钟。您需要等待主窗口超过默认超时(5 秒)。
win.wait('ready', timeout=15)
弹出“软件更新”窗口也可以处理:
if app.SoftwareUpdate.exists(timeout=10):
app.SoftwareUpdate.SkipThisVersion.click()
app.SoftwareUpdate.wait_not('visible') # just to make sure it's closed
win.wait('ready', timeout=15)
编辑(2019 年 1 月 21 日):最新版本的 WireShark 建立在 Qt5 之上,当前的 pywinauto 示例在 repo 中维护:examples/wireshark.py。
(下面答案的旧部分)但无论如何 pywinauto 不支持 GDK 小部件(甚至 Windows UI 自动化 API 也不支持 GDK 应用程序)。菜单不适用于 pywinauto 或基于 UIA 的工具。您只能使用以下解决方法来处理 WireShark:
win.type_keys('%F{ENTER}') # Alt+F, Enter (it calls "&File->&Open" menu)
app.WiresharkOpenCaptureFile.FilenameEdit.set_edit_text('I can set text here')
app.WiresharkOpenCaptureFile.Open.click()
app.WiresharkOpenCaptureFile.wait_not('visible')
“打开”对话框是 Windows 打开/保存对话框的标准变体,pywinauto 支持许多控件。
print_control_identifiers()
要检查 pywinauto 使用方法支持哪个对话框:
win.print_control_identifiers() # prints nothing
app.WiresharkOpenCaptureFile.print_control_identifiers() # prints a lot of controls