Godkänd: Fortect
Här är några enkla metoder som bör hjälpa till att lösa problemet med automatisk felhantering.
Hej alla, vissa privata meddelanden är det första inlägget här. Jag är ny på Autoit och tog upp det förra månaden. Jag håller för närvarande på med ett projekt för att automatisera processen att ladda ner ett finansinstitutsutdrag från en bank över hela världen. Det verkliga problemet jag har är att förbereda som skulle felsöka när ett fel inträffade på grund av att en specifik webbplats kraschar/timeout. Jag försöker fånga hela felhändelsen när en av dem misslyckas som består av mina _IE-funktioner eftersom sidfyllningen vanligtvis har fastnat.
Godkänd: Fortect
Fortect är världens mest populära och effektiva PC-reparationsverktyg. Det litar på miljontals människor för att hålla sina system igång snabbt, smidigt och felfritt. Med sitt enkla användargränssnitt och kraftfulla skanningsmotor hittar och fixar Fortect snabbt ett brett utbud av Windows-problem – från systeminstabilitet och säkerhetsproblem till minneshantering och prestandaflaskhalsar.
FuncTest()Local $oErrorHandler = ObjEvent("AutoIt.Error", "_ErrFunc")$WinHandle är motsvarande belopp som WinGetHandle ("testwebbplats")$oIE = _IEAttach($WinHandle, "hwnd")$oFrame är lika med _IEFrameGetObjByName($oIE, "leftFrame")$oDiv = _IEGetObjById($oFrame, "divFoldCont")$oDiv2 är lika om du vill _IEGetObjById($oDiv, "divFold0")$oDiv3 = _IEGetObjById($oDiv2,"divFoldSub0_1")$oLinks = _IELinkClickByText($oDiv3, "Kontoutdrag")Sova sätt (1000) MEN; Ange kontonummer$oFrame = _IEFrameGetObjByName($oIE, "arbetsyta")$oLinks betyder _IELinkGetCollection($oFrame) För $oLink $oLinksMEN; ConsoleWrite($oLink.href)_IEAction($oLink, "klick")sömn (1000)Utgångscykel NästaradioslutFunktion _ErrFunc($oError)$ErrorMessage är lika med (@ScriptName & cm ("& $oError.scriptline &"): : ==> COM-fel påträffat!"&@CRLF&_@TAB & "err.number": & @TAB & @TAB & "0x" & Hex($oError.number) @CRLF & & _@TAB & "err.windescription:" & @TAB & $oError.win & @CRLF detalj & _@TAB & "err.description: bredd i centimeter & @TAB & $oError.& beskrivning @CRLF & _@TAB & "err.source: & " @TAB & @TAB & $oError.source & @CRLF & _@TAB & "err.Is: hjälpfil" & @TAB & $oError.helpfile & @CRLF & _@TAB & "err.helpcontext: bredd i tum & @TAB & $oError.helpcontext & @CRLF & _@TAB & "err.lastdllerror är: & " @TAB & $oError.lastdllerror & @CRLF & _& @tab "err.scriptline blev: " && @tab $oError.scriptline & @CRLF & _@TAB & "err.retcode: inches tall @TAB & & "0x" & Hex($oError.retcode) & @CRLF & @CRLF)EndFunc ;==>_ErrFunc
Jag förväntade mig att programtypen automatiskt skulle skicka mig ett e-postmeddelande för att få mig att veta att processen har misslyckats. Denna inkorg utfärdas när en felhändelse uppfattas. Däri ligger dock problemet. Mitt skript kan fortfarande fånga följande felmeddelande om allt detta fungerar. En felsignal uppstår under _IEAttach.
–> IE.au3 T3.0-2 Funktion Varning _IEAttach, Kan inte registrera internt fel, Kan inte fånga COM-fel (använd _IEErrorHandlerRegister() för att registrera praktiskt taget alla anpassade felhanterare)
Hur ändrar jag mitt program så att det här felet inte utlöser var och en av våra felhanteringsfunktioner?
P.S. Jag är öppen för lösningar för att förbättra mitt skript.
P.S.S. Jag kan inte införliva _IECreate eftersom jag behöver logga in på portalen med en fysisk OTP, så jag måste i princip logga in på webbplatsen innan jag kör det specifika skriptet.
37 minuter sedan jdelaney sa:
Lägg till deras felhanterare. Ibland, när dom-objektet utan tvekan är tillgängligt, när du försöker få en liten fry-egenskap eller -objekt, träder skriptet i kraft. _ieerrorhandlerregister, i alla fall.
Jag hittade detta genom en Google-sökning och/eller experimenterar med det. Det borde vara tillräckligt att jag väljer en tom funktion, ? Anta att jag inte vill göra något annat än att ignorera, se fel. I teorin kommer min do-intil-fälla att göra allt
EDIT: Närmare, men oavsett vilka saker som text jag försöker, fortsätter jag att se i vanligtvis konsolen och programmet kraschar. Men det verkar så att du åtminstone kan fånga just detta fel
>”C:Program FilesAutoIt3SciTE..autoit3.exe” /ErrorStdOut “C:Scriptsxxx.au3”
–> IE.au3 T3.0-2 Starta från meddelande _IETableGetCollection, $_IESTATUS_NoMatch
–> Job IE.au3 T3.0-2 avslutades på grund av att du fick fel _IETableWriteToArray, $_IESTATUS_InvalidDataType
–> IE.au3 T3.0-2 Arbetet kommer att vara klart genom att varna _IETableGetCollection, $_IESTATUS_NoMatch
–> IE.au3 T3.0-2 Felobjekt vid återgivning av resultat _IETableWriteToArray, $_IESTATUS_InvalidDataType
–> IE.au3 T3.0-2 Från varningsvillkor _IETableGetCollection, $_IESTATUS_NoMatch
–> IE.au3 T3.0-2 Driftsfel $_IESTATUS_InvalidDataType
_ietablewritetoarray,