Скрипт работает через библиотеку IE открывает сайт, авторизуется, переходит на внутреннюю страницу и там есть ссылка-кнопка, клик по которой открывает всплывающее окно с этой же самой страницей, которое вызывает скачивание файла. Т.е. порядок действий пользователя: клик, появилось всплывающее окно и тут же диалог сохранения файла. Выбор места для сохранения - всплывающее окно закрылось, файл скачался. К сожалению, собранный код делает немного не так, как ожидаю: клик проходит, всплывающее окно (для домена ранее разрешил всплывающие окна) появляется и тут же пропадает. (Если после этого при работающем скрипте кликнуть самому по кнопке - окно откроется, предложит сохранить файл). Диалог сохранения файла не появляется, ловушка этого диалога WinWait ("File Download", "Do you want to save") продолжает висеть и ждать то, не знаю чего.
Винда англоязычная, тексты в диалогах и заголовках соответствуют. Код частично взят из подобной темы сохранения файла.
Первый вечер изучаю язык, всё больше разбирался на примерах.
Заранее благодарен за помощь.
Винда англоязычная, тексты в диалогах и заголовках соответствуют. Код частично взят из подобной темы сохранения файла.
Код:
;Клик по кнопке скачивания
$oLinks = _IETagNameGetCollection($o_ie, 'a')
$i=0
For $oLink in $oLinks
If StringInStr($oLink.innerHTML,"Download full statement") Then
_IELinkClickByIndex ($o_ie, $i)
ExitLoop
EndIf
$i=$i+1
Next
_IELoadWait ($o_ie)
Sleep(1000)
;Сохранение полученного файла
;Дальше этой строчки не идёт
WinWait ("File Download", "Do you want to save")
Sleep(1000)
ControlClick("File Download", "Do you want to save", '[CLASS:Button; INSTANCE:2]')
Sleep(1000)
$sText = ControlGetText ( "Save As", "Desktop", '[CLASS:Edit; INSTANCE:1]' )
MsgBox(0, "Error", $sText)
Sleep(1000)
ControlSetText("Save As", "Desktop", '[CLASS:Edit; INSTANCE:1]', @ScriptDir &"\pdfs\"&$sText)
Sleep(1000)
ControlClick("Save As", "Desktop", '[CLASS:Button; INSTANCE:2]')
Sleep(1000)
WinWaitClose("САЙТ","Estimated") ;Есть подозрение, что тут первый параметр должен быть другим, но это лишь подозрения.
Sleep(1000)
WinWait ( "Download complete" , "Download complete", 2 )
If WinExists( "Download complete" , "Download complete") Then
ControlClick("Download complete" , "Download complete", '[CLASS:Button; INSTANCE:4]')
EndIf
MsgBox(0, "Error", "Файл сохранён")
Первый вечер изучаю язык, всё больше разбирался на примерах.
Заранее благодарен за помощь.