2015-09-04 167 views
2

我是非常新的windows automation.I自動wireshark使用autopy.Now我需要打開一個文件wireshark.I沒有swapy tool.I也dot想在pyshark.I做它只是想嘗試只在pywinauto.so我想是這樣的:Pywinauto菜單選擇錯誤 - Wireshark

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 

請幫我在這裏用這個guys.Thanks提前

+1

做了回答幫助? –

回答

3

因爲我ca見WireShark啓動幾秒鐘。您需要等待主窗口超過默認超時(5秒)。

win.Wait('ready', timeout=15) 

「軟件更新」窗口還可以,如果彈出處理:

if app.SoftwareUpdate.Exists(timeout=10): 
    app.SoftwareUpdate.SkipThisVersion.Click() 
    app.SoftwareUpdate.WaitNot('visible') # just to make sure it's closed 

win.Wait('ready', timeout=15) 

但在任何情況下pywinauto不支持GDK部件(甚至是Windows UI自動化API不支持GDK應用)。菜單不適用於pywinauto或基於UIA的工具。您可以處理使用的解決方法只有像這樣的是Wireshark:

win.TypeKeys('%F{ENTER}') # Alt+F, Enter (it calls "&File->&Open" menu) 
app.WiresharkOpenCaptureFile.FilenameEdit.SetEditText('I can set text here') 
app.WiresharkOpenCaptureFile.Open.Click() 
app.WiresharkOpenCaptureFile.WaitNot('visible') 

「打開」對話框是Windows打開/保存對話框的標準偏差和pywinauto支持就可以了許多控件。

要檢查哪些對話由pywinauto使用可以很好地支持PrintControlIdentifiers()方法:

win.PrintControlIdentifiers() # prints nothing 
app.WiresharkOpenCaptureFile.PrintControlIdentifiers() # prints a lot of controls