AUTOIT在IE9及更高版本中自动下载文件

时间:2014-05-07 23:59:03

标签: internet-explorer autoit

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

我遇到的问题是,有时当连接速度很慢时,IE9下载提示需要很长时间才能显示,键击会错过目标。使用SLEEP是不可能的,因为显示文件下载需要不同的时间,如果例如我在1秒内显示提示时脚本SLEEP持续6秒,则会不必要地减慢脚本速度。

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

我正在查看controlGetHandle函数,如果有人可以提供有关如何浏览IE下载管理器提示的任何想法,我将非常感激。这是在出现下载提示时激活脚本。

先谢谢你们。

2 个答案:

答案 0 :(得分:0)

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

WinWait("download", "" , 10000 )

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

答案 1 :(得分:0)

这是

#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}")