2011-04-29 65 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