2011-04-29 67 views
0

如何使用VB Script在特定位置自動保存文件?如何使用VB腳本處理IE下載對話框?

或者如何將文件下載到IE中的特定位置而不需要與下載對話框交互 ?

最終我需要從IE自動保存特定位置的文件。

謝謝。

+0

你考慮過AutoIT嗎? – 9ikhan 2011-04-29 03:51:02

+0

是的,我們嘗試過使用AutoIT,它在RDP打開的情況下起作用。但是當我們關閉RDP時,AutoIT腳本會掛起。 – SmartSolution 2011-05-06 06:08:30

回答

-1

強制在Internet Explorer中下載文件是非常糟糕的做法。這也是一個安全風險。這就是爲什麼沒有本地方法來做到這一點。你能提供一個很好的理由來解決這個問題嗎?否則,我不會爲我剛纔陳述的原因提供解決方案。

+0

這是用於我們的內部測試/自動化。我們嘗試使用AutoIt進行自動化,它在我們點擊下載等時起作用,但是當它們連接到RDP時,如果我們正在關閉RDP,則腳本會掛起。 – SmartSolution 2011-05-06 06:07:02

+0

答案不是解決方案,而是評論。對於@Zugwalt的第一個解決方案,使用註冊表中的Windows自動登錄有一個很好的RDP問題解決方法:http://serverfault.com/questions/269832/windows-server-2008-automatic-user-logon-on -power-on/606130#606130 – 2014-07-22 15:17:57

+0

可悲的是我的回答被刪除了...無論如何,一個簡單的解決方案是在Internet Explorer **中使用一個好的**下載管理器插件。 我嘗試了很多種類,但大多數都沒有**,沒有用戶交互**,所以不適合自動化任務。 這裏有一個免費軟件做的工作: http://www.majorgeeks.com/files/details/dlexpert.html 如果您遇到HTTPS,或其他驗證錯誤下載文件的問題,試試這個免費軟件來代替: http://www.orbitdownloader.com/download.htm – 2014-07-23 14:20:44

2

我們通過硒測試爲文件對話做的工作就是利用AutoIt這個免費的腳本編制工具,它可以創建與windows組件對象模型交互的可執行文件 - 包括文件保存對話框。

我會做的是製作一個簡單的腳本,將文件保存到您想要的位置,編譯爲可執行文件,然後在VBScript中調用該程序。

下面是我們用來下載excel文件的腳本,雖然它可能比您需要的複雜一點。

WinWait("File Download", "", 60) 
WinActivate("File Download") 
IF WinActive("File Download") Then 
    Sleep (500) 
    SendKeepActive ("File Download") 
    Send("!s") 
    WinWait("Save As") 
    WinActivate("Save As") 
    Sleep (500) 
    SendKeepActive ("Save As") 
    If $CMDLine[0] > 0 Then 
     Send($CMDLine[1]) 
    ELSE 
     Send("C:\Windows\Temp\latestAutotestExport.xls") 
    ENDIF 
    Send("!s") 
    Sleep (500) 
    If WinActive("Save As") Then 
     WinActivate("Save As") 
     Sleep (500) 
     SendKeepActive ("Save As") 
     Send("!y") 
     Sleep (15000) 
    EndIf 
    If WinActive("Download complete") Then 
     WinClose("Download complete") 
    EndIf 
    WinClose("Blank Page - Windows Internet Explorer") 
Else 
    WinActivate("Microsoft Office Excel") 
    IF WinActive("Microsoft Office Excel") Then 
     Send("y") 
    EndIf 
    Sleep(500) 
    Send("{F12}") 
    If $CMDLine[0] > 0 Then 
     Send($CMDLine[1]) 
    ELSE 
     Send("C:\Windows\Temp\latestAutotestExport.xls") 
    ENDIF 
    Send("!s") 
    Send("y") 
    Send("!y") 
    Send("!y") 
    Sleep(5000) 
    ProcessClose("EXCEL.EXE") 
    Sleep(5000) 
    WinClose("Blank Page - Windows Internet Explorer provided by Yahoo!") 
EndIF 
+0

謝謝@zugwalt但是,當RDP關閉時,AutoIt不工作。這就是我們尋找替代解決方案的原因。或者如果你可以建議讓這個腳本在鎖定的RDP上工作。或者有些工作? – SmartSolution 2011-05-06 06:06:20

+0

AutoIt將需要使用瀏覽器在實際機器上運行,而不是通過網絡運行。 – Zugwalt 2011-05-06 15:08:57