【问题标题】:how to handle IE Download dialog with VB Script?如何使用 VB 脚本处理 IE 下载对话框?
【发布时间】:2023-03-26 02:02:01
【问题描述】:

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

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

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

谢谢。

【问题讨论】:

  • 您是否考虑过 AutoIT?
  • 是的,我们已经尝试使用 AutoIT,如果 RDP 是打开的,它就可以工作。但是当我们关闭 RDP 时,AutoIT 脚本会挂起。

标签: vbscript selenium automation registry


【解决方案1】:

我们对 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

【讨论】:

  • 感谢@zugwalt 但是,当 RDP 关闭时 AutoIt 不起作用。这就是我们正在寻找替代解决方案的原因。或者,如果您可以建议使此脚本在锁定的 RDP 上运行。或一些解决方法?
  • AutoIt 需要在带有浏览器的实际机器上运行,而不是通过网络。
【解决方案2】:

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

【讨论】:

  • 它用于我们的内部测试/自动化。我们尝试使用 AutoIt 将其自动化,当我们点击下载等时它可以工作,但是当连接到 RDP 时,如果我们关闭 RDP,我的脚本就会挂起。
  • 答案不是解决方案,而是评论。对于@Zugwalt 的第一个解决方案,RDP 问题有一个很好的解决方法,在注册表中使用 Windows 自动登录:serverfault.com/questions/269832/…
  • 很遗憾我的答案被删除了...无论如何,直接的解决方案是使用一个好的Internet Explorer 中的下载管理器插件。我尝试了很多种,但大多数都没有没有用户交互,所以不适合自动化任务。下面是一款可以运行的免费软件:majorgeeks.com/files/details/dlexpert.html 如果您在 HTTPS 中下载文件时遇到问题或其他身份验证错误,请尝试使用此免费软件:orbitdownloader.com/download.htm
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-06
  • 2011-05-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多