【问题标题】:AUTOIT Automating File Download in IE9 and aboveAUTOIT 在 IE9 及以上版本中自动下载文件
【发布时间】:2014-05-07 23:59:03
【问题描述】:

我目前正在编写使用 AUTOIT 下载文件的脚本。该脚本的工作原理是它将打开 IE,附加到窗口,输入 URL 字符串以下载文件,然后在 IE9 下载管理器提示出现时发送击键以下载文件。

我遇到的问题是,有时当连接速度很慢时,IE9 下载提示需要很长时间才能出现,并且击键会错过目标。使用 SLEEP 是不可能的,因为显示文件下载需要花费可变的时间,并且如果在 1 秒内显示提示时我让脚本 SLEEP 6 秒,它将不必要地减慢脚本。

PS。我无法使用 INET get 函数,因为我传递的 URL 是一个报表服务器,报表是在那里生成的,并且文件在浏览器中呈现给我。

我正在查看 controlGetHandle 函数,如果有人能就如何浏览 IE 下载管理器提示提供任何想法,我将不胜感激。即出现下载提示时激活脚本。

提前谢谢各位。

【问题讨论】:

    标签: internet-explorer autoit


    【解决方案1】:

    我猜WinWait 是可以在这里为您提供帮助的功能。它会暂停脚本,直到指定的窗口存在,并且作为安全防护,还有一个超时参数,以便您可以使用:

    WinWait("download", "" , 10000 )
    

    这将等待标题中带有“下载”的窗口,直到 10 秒过去。

    【讨论】:

    • 不,winwait ("download","") 将不起作用,因为通知弹出窗口不在单独的窗口中。
    • 然后只给出该通知弹出窗口标题的子字符串作为函数参数。我应该指出我使用的“下载”字符串只是一个示例。
    【解决方案2】:

    这里是

    #include <IE.au3>
    Opt("WinTitleMatchMode", 2)
    
    
    Local $oIE = _IE_Example("form")
    
    $oInputFile = _IEGetObjByName($oIE, "fileExample")
    $FileToUpload = "c:\myfile.txt"
    
    _IEAction($oInputFile, "focus")
    $hIE = _IEPropertyGet($oIE, "hwnd")
    ControlSend($hIE, "", "Internet Explorer_Server1", " ")
    
    WinWait("Choose File", "", 30)
    
    Sleep(1000)
    
    WinActivate("Choose File")
    ControlSend("Choose File", "", "[CLASS:Edit; INSTANCE:1]", $FileToUpload, 1)
    Sleep(1000)
    WinActivate("Choose File")
    ControlSend("Choose File", "", "", "{ENTER}")
    

    【讨论】:

    • 此代码仅适用于使用浏览对话框上传文件。是否有可能您有一个来下载文件。那是来自 IE 弹出通知
    • 使用 _IELinkGetCollection 找到链接及其 URL,然后在其上使用 InetGet。
    • 谢谢,但是,_IELinkGetCollection 报告没有链接
    猜你喜欢
    • 2014-02-18
    • 1970-01-01
    • 2014-02-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-13
    • 2016-10-31
    • 1970-01-01
    相关资源
    最近更新 更多