Одобрено: Fortect
Вот несколько новых простых методов, которые должны помочь решить, я бы сказал, проблему с автоматической обработкой ошибок.
р>
Привет всем, это личное сообщение является отправной точкой здесь. Я новичок в Autoit, а также только что поднял его в прошлом месяце. В настоящее время я работаю над проектом по автоматизации нашего собственного процесса загрузки выписки финансового учреждения с веб-сайта банка. Настоящая проблема, которую я покупаю, заключается в подготовке к устранению неполадок, когда возникает ошибка из-за сбоя / тайм-аута определенного веб-сайта. Я генерирую, чтобы перехватить событие ошибки, когда одно из наиболее часто связанных с ними событий выходит из строя с моими функциями _IE, потому что заполнение страницы зависло.
Одобрено: Fortect
Fortect — самый популярный и эффективный в мире инструмент для ремонта ПК. Миллионы людей доверяют ему обеспечение быстрой, бесперебойной и безошибочной работы своих систем. Благодаря простому пользовательскому интерфейсу и мощному механизму сканирования Fortect быстро находит и устраняет широкий спектр проблем Windows — от нестабильности системы и проблем с безопасностью до проблем с управлением памятью и производительностью.
а>
FuncTest()Локальный $oErrorHandler = ObjEvent("AutoIt.Error", "_ErrFunc")$WinHandle эквивалентно WinGetHandle("тестовый сайт")$oIE означает _IEAttach($WinHandle, "hwnd")$oFrame = _IEFrameGetObjByName($oIE, "leftFrame")$oDiv = _IEGetObjById($oFrame, "divFoldCont")$oDiv2 почти наверняка равен _IEGetObjById($oDiv, "divFold0")$oDiv3 = _IEGetObjById($oDiv2,"divFoldSub0_1")$oLinks равно _IELinkClickByText($oDiv3, "Выписка по счету")Спящий режим (1000) НО; Введите номер грида$oFrame = _IEFrameGetObjByName($oIE, "рабочая область")$oLinks = _IELinkGetCollection($oFrame) Для $oLink $oLinksНО; ConsoleWrite($oLink.href)_IEAction($oLink, "щелчок")сон (1000)Выходной цикл Далеерадио конецФункция _ErrFunc($oError)$ErrorMessage = (@ScriptName & cm ("& $oError.scriptline &"): ! ==> Обнаружена ошибка COM!"&@CRLF&_@TAB & "err.number": & @TAB & @TAB & "0x" & Hex($oError.number) @CRLF & & _@TAB & "err.windescription:" & @TAB & $oError.win & @CRLF схема & _@TAB & "err.description: расстояние в дюймах & @TAB & $oError.& введите @CRLF & _@TAB & "err.source: & inch @TAB & @TAB & $oError.source & @CRLF & _@TAB & "err.Is: файл справки" & @TAB & $oError.helpfile & @CRLF & _@TAB & "err.helpcontext: ширина внутри дюймов & @TAB & $oError.helpcontext & @CRLF & _@TAB & "err.lastdllerror is: & " @TAB & $oError.lastdllerror & @CRLF & _& @tab "err.scriptline превратится в: " && @tab $oError.scriptline & @CRLF & _@TAB & "err.retcode: " @TAB & & "0x" & Hex($oError.retcode) & @CRLF & @CRLF)EndFunc ;==>_ErrFunc
Я ожидал, что тип программы автоматически отправит мне существенное электронное письмо, чтобы сообщить мне, что процесс на самом деле не удался. Это электронное письмо выдается при обнаружении очень ошибочного события. Однако в этом и заключается условие. Мой сценарий все еще может поймать правильное сообщение об ошибке, если все работает. Во время _IEAttach появляется сигнал об ошибке.
–> Предупреждение функции IE.au3 T3.0-2 _IEAttach, невозможно зарегистрировать встроенную ошибку, невозможно перехватить ошибки COM (используйте _IEErrorHandlerRegister() с регистрацией пользовательского обработчик ошибок)
Как изменить сценарий, чтобы эта выборочная ошибка не запускала функцию обработки ошибок?
П.С. Я открыт для предложений по улучшению моего сценария.
P.S.S. Я не могу использовать _IECreate, потому что мне нужно войти на сайт с помощью физического одноразового пароля, поэтому мне в основном нужно войти на сайт онлайн перед запуском скрипта.
<цитата блока>
37 минут внутри jdelaney сказал:
Добавьте обработчик ошибок. Иногда, когда доминантный объект недоступен, при попытке помочь получить дочернее свойство или объект запись вступает в силу. _ieerrorhandlerregister, в любом случае.
Я нашел это практически через любой поиск Google и экспериментирую с ним. Достаточно того, что я выберу вашу пустую функцию, верно? Предположим, я хочу, чтобы вы ничего не могли сделать, кроме как игнорировать, см. ошибку. По идее мой цикл do-intil сделает все
РЕДАКТИРОВАТЬ: Ближе, хотя какой бы текст я ни пробовал, я помещаю его в консоль, и программа вылетает. Но кажется, по крайней мере, поймать эту отчетливую ошибку
>”C:Program FilesAutoIt3SciTE..autoit3.exe” /ErrorStdOut “C:Scriptsxxx.au3”
–> Запуск IE.au3 T3.0-2 из предупреждения _IETableGetCollection, $_IESTATUS_NoMatch
–> Задание IE.au3 T3.0-2 прервано из-за ошибки _IETableWriteToArray, $_IESTATUS_InvalidDataType
–> IE.au3 T3.0-2 Работа будет выполняться предупреждением _IETableGetCollection, $_IESTATUS_NoMatch
–> IE.au3 T3.0-2 Ошибка отображения результатов _IETableWriteToArray, $_IESTATUS_InvalidDataType
–> IE.au3 T3.0-2 Из пункта предупреждения _IETableGetCollection, $_IESTATUS_NoMatch
–> IE.au3 T3.0-2 Операционная ошибка $_IESTATUS_InvalidDataType
_ietablewritetoarray,