Pywinauto菜单选择错误 - Wireshark

时间:2015-09-04 05:49:47

标签: python automation wireshark robotframework pywinauto

我是windows自动化的新手。我正在使用autopy自动化wireshark。现在我需要打开一个文件wireshark.I没有swapy工具。我也想在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

请帮助我和这些伙伴们一起来。谢谢你们提前

1 个答案:

答案 0 :(得分:3)

正如我所看到的,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)

EDIT(2019年1月21日):最新版本的WireShark建立在Qt5上,当前的pywinauto示例保存在repo:examples/wireshark.py中。

(以下答案的老部分) 但无论如何,pywinauto不支持GDK小部件(即使Windows UI Automation 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