【问题标题】:Pywinauto menu selection error - WiresharkPywinauto 菜单选择错误 - Wireshark
【发布时间】:2015-11-30 04:35:46
【问题描述】:

我对 Windows 自动化非常陌生。我正在使用 autopy 自动化 wireshark。现在我需要打开一个文件 wireshark。我没有交换工具。我也想在 pyshark 中做。我只想尝试pywinauto.so 我试过这样:

from pywinauto import application

print("Starting the proogram")
app=application.Application()
app.start_(r"C:\Program Files\Wireshark\Wireshark.exe")
win = app.window_(title_re = ".*Wireshark Network Analyzer.*")
win.MenuSelect("File->Open")

但我得到以下错误:

pywinauto.findwindows.WindowNotFoundError

请帮我解决这个问题。在此先感谢

【问题讨论】:

  • 答案有帮助吗?

标签: python automation wireshark robotframework pywinauto


【解决方案1】:

我可以看到 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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-05-09
    • 1970-01-01
    • 2019-05-02
    • 2016-11-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多