2016-03-10 28 views
0

情景是,我想處理IE在python機器人框架中彈出。爲了處理彈出,我使用了AutoIT SendKeys,shell腳本,pywinauto TypeKeys。 代碼在本地機器上運行時正常工作,但是當我通過代理機器上的團隊城市運行腳本時,代碼失敗。 我的觀察是,在代理機器中,代碼無法處理彈出的窗口。SendKeys方法的AutoIT,shell腳本或pywinauto lib不工作

經過分析,我發現這是因爲代理機器在通過團隊城市運行腳本時作爲鎖定系統工作。

代碼:

def fhandle_savepopup(self): 

    shell = win32com.client.Dispatch("WScript.Shell") 
    seleniumLib = BuiltIn().get_library_instance('Selenium2Library') 
    shell.AppActivate ("Internet Explorer") 
    sleep(2) 
    autolib = BuiltIn().get_library_instance('AutoItLibrary') 
    shell.SendKeys('{F6}') 
    sleep(3) 
    shell.SendKeys('{TAB}') 
    sleep(3) 
    shell.SendKeys('{ENTER}') 

我使用的AutoIt和pywinauto LIB過。但沒有運氣。

請幫我找到一個解決方案。

回答

0

你需要保持你的桌面開放和非鎖定(它可以通過setting auto-logon up + VNC會話像TightVNC解決)。對於TightVNC,您可能還需要更新顯卡驅動程序並設置自定義分辨率(例如,在NVIDIA控制面板中)。當然,這個節點必須從這個打開的桌面(不作爲服務)連接到Team City主節點。

另一種選擇是靜靜地單擊窗口按鈕(沒有真實的用戶輸入仿真)。在pywinauto它可以使用Click()完成(ClickInput()更加逼真,不會對鎖定的系統中工作):

app.Window_(title="Popup title").Wait('visible', timeout=10) 
app.Window_(title="Popup title").OK.Click() 

附: TypeKeys()也可以作爲真實的用戶輸入。我們計劃使用可能適用於您的WM_CHAR窗口消息來實施靜默版本(SendChars)。但pywinauto 0.6.0版本目前正處於深度重新分解階段。所以它可能會在四月甚至五月份發佈,但WPF支持很好。