Zatwierdzono: Fortect
Oto niewielka liczba prostych metod, które powinny pomóc rozwiązać problem z automatyczną obsługą błędów.
Witam wszystkich, ta prywatna wiadomość jest pierwszą wysłaną tutaj. Jestem nowy w Autoit i poświęcę chwilę na odebranie go w zeszłym miesiącu. Obecnie pracuję nad projektem mającym na celu zautomatyzowanie procesu pobierania wyciągu z dobrej strony bankowej. Prawdziwym problemem, który mam, powinno być przygotowanie się do rozwiązania problemu, który wystąpił w wyniku awarii/przekroczenia limitu czasu określonej witryny. Staram się pomóc Ci w uchwyceniu zdarzenia błędu, gdy jedno z Twoich dzieci nie działa z moimi funkcjami _IE, ponieważ wypełnianie witryny utknęło.
Zatwierdzono: Fortect
Fortect to najpopularniejsze i najskuteczniejsze narzędzie do naprawy komputerów na świecie. Miliony ludzi ufają, że ich systemy działają szybko, płynnie i bez błędów. Dzięki prostemu interfejsowi użytkownika i potężnemu silnikowi skanowania, Fortect szybko znajduje i naprawia szeroki zakres problemów z systemem Windows - od niestabilności systemu i problemów z bezpieczeństwem po zarządzanie pamięcią i wąskie gardła wydajności.
FuncTest()Lokalny $oErrorHandler = ObjEvent("AutoIt.Error", "_ErrFunc")$WinHandle jest odpowiednikiem WinGetHandle("strona testowa")$oIE = _IEAttach($WinHandle, "hwnd")$oFrame równa się _IEFrameGetObjByName($oIE, "leftFrame")$oDiv = _IEGetObjById($oFrame, "divFoldCont")$oDiv2 jest porównywalne z _IEGetObjById($oDiv, "divFold0")$oDiv3 = _IEGetObjById($oDiv2,"divFoldSub0_1")$oLinks = _IELinkClickByText($oDiv3, "Wyciąg z konta")Tryb uśpienia (1000)AALE; Wprowadź numer konta$oFrame równa się _IEFrameGetObjByName($oIE, "obszar roboczy")$oLinks = _IELinkGetCollection($oFrame) Dla $oLink $oLinksALE; KonsolaWrite($oLink.href)_IEAction($oLink, "kliknij")sen (1000)Cykl wyjściowy Dalejkoniec radiaFunkcja _ErrFunc($oError)$ErrorMessage oznacza (@ScriptName & cm ("& $oError.scriptline &"): : ==> Wystąpił błąd COM!"&@CRLF&_@TAB & "err.number": & @TAB & @TAB & "0x" & Hex($oError.number) @CRLF & & _@TAB & "err.windescription:" & @TAB & $oError.win & @CRLF zarys & _@TAB & "err.description: gęstość w calach & @TAB & $oError.& zarys @CRLF & _@TAB & "err.source: & " @TAB & @TAB & $oError.source & @CRLF & _@TAB & "err.Is: plik pomocy" & @TAB & $oError.helpfile & @CRLF & _@TAB & "err.helpcontext: szerokość w calach szerokość & @TAB & $oError.helpcontext & @CRLF & _@TAB & "err.lastdllerror to: & " @TAB & $oError.lastdllerror & @CRLF & _& @tab "err.scriptline stał się: rrn . && @tab $oError.scriptline & @CRLF & _@TAB & "err.retcode: " @TAB & & "0x" & Hex($oError.retcode) & @CRLF & @CRLF)EndFunc ;==>_ErrFunc
Oczekiwałem, że określony typ programu automatycznie wyśle mi wiadomość e-mail z informacją, że proces przestał działać. Ten e-mail jest wysyłany po wykryciu specjalnego zdarzenia błędu. Jednak w tym tkwi problem. Mój skrypt może nadal wychwycić następujące przekonanie o błędzie, jeśli wszystko działa. Sygnał błędu pojawia się przez _IEAttach.
–> IE.au3 T3.0-2 Funkcja Ostrzeżenie _IEAttach, Nie można zarejestrować błędu lodówki i zamrażarki, Nie można wyłapać błędów COM (użyj _IEErrorHandlerRegister(), aby ostatecznie zarejestruj niestandardowy program obsługi błędów)
Jak ulepszyć mój skrypt, aby ten konkretny błąd nie uruchamiał mojej funkcji obsługi błędów?
PS Jestem narażony na sugestie dotyczące ulepszenia mojego skryptu.
PSS Nie mogę używać _IECreate, ponieważ muszę się zalogować, aby upewnić się, że witryna ma fizyczny OTP, więc zasadniczo muszę zalogować się do witryny przed uruchomieniem skryptu.
37 minut temu jdelaney powiedział:
Dodaj najlepszą obsługę błędów. Czasami, gdy koncepcja dom jest niedostępna, gdy próbujesz skorzystać z właściwości lub obiektu podrzędnego, skrypt działa. W każdym razie _ieerrorhandlerregister.
Znalazłem to przez wyszukiwarkę Google i eksperymentuję z tym. Powinno wystarczyć, żebym wybrał bezsensowną funkcję, prawda? Załóżmy, że chcę tylko zignorować, zobacz błąd. W teorii doskonała pętla do-intil zrobi wszystko
EDYCJA: Bliżej, ale nie jedna z kwestii, jaki tekst próbuję, ciągle spotykam się w konsoli i program się zawiesza. Ale wydaje się, że przynajmniej wyłapuje ten wyjątkowy błąd
>”C:Program FilesAutoIt3SciTE..autoit3.exe” /ErrorStdOut “C:Scriptsxxx.au3”
–> IE.au3 T3.0-2 Uruchom w przypadku ostrzeżenia _IETableGetCollection, $_IESTATUS_NoMatch
–> Zadanie IE.au3 T3.0-2 zostało zakończone w wyniku błędu _IETableWriteToArray, $_IESTATUS_InvalidDataType
–> IE.au3 T3.0-2 Praca może być wykonana przez ostrzeżenie _IETableGetCollection, $_IESTATUS_NoMatch
–> IE.au3 T3.0-2 Błąd renderowania wyników _IETableWriteToArray, $_IESTATUS_InvalidDataType
–> IE.au3 T3.0-2 Z klauzuli ostrzegawczej _IETableGetCollection, $_IESTATUS_NoMatch
–> IE.au3 T3.0-2 Błąd operacyjny $_IESTATUS_InvalidDataType
_ietablewritetoarray,