2

我对windows自动化很陌生。我正在使用autopy自动化wireshark。现在我需要打开一个文件wireshark。我没有swpy工具。我也想在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

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

4

1 回答 1

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)

编辑(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
于 2015-09-04T08:38:39.880 回答