我是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
请帮助我和这些伙伴们一起来。谢谢你们提前
答案 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