如何使用VB脚本处理IE下载对话框?

时间:2011-04-29 03:02:54

标签: vbscript selenium automation registry

如何使用VB脚本在特定位置自动保存文件?

或如何在不进行交互的情况下将文件下载到IE中的特定位置 使用下载对话框?

最终我需要自动从IE中保存特定位置的文件。

感谢。

2 个答案:

答案 0 :(得分:2)

我们使用我们的selenium测试对文件对话框所做的是利用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

答案 1 :(得分:-1)

在Internet Explorer中强制下载文件是非常糟糕的做法。这也是一种安全风险。这就是为什么没有本地方法来做到这一点。你能提供一个很好的理由吗?否则,由于我刚才所说的原因,我不打算提供解决方案。