Alguien me ayuda con Error de IE

Pregunta Sin Miedo no te cortes cualquier cosa para empezar - Autoit se comienza facilmente.Para Ordenes o Comandos sueltos. Ver nota como preguntar.
Responder
dacu
Hacker del Foro
Mensajes: 106
Registrado: 20 May 2010, 00:09

Alguien me ayuda con Error de IE

Mensaje por dacu »

Buenas, no se que pasa pero de vez en cuando, nos e muy bien la razón por que a veces pasa y otras no, pero recibo un error que me cierra totalmente el scrip.

El error es el siguiente.

--> IE.au3 T3.0-1 Warning from function _IEGetObjById, $_IEStatus_NoMatch (add_video)
--> IE.au3 T3.0-1 Error from function _IETagNameGetCollection, $_IEStatus_InvalidDataType
"C:\Program Files (x86)\AutoIt3\Include\IE.au3" (1787) : ==> Variable must be of type "Object".:
Func _IETagNameGetCollection(ByRef $o_object, $s_TagName, $i_index = -1)
Func _IETagNameGetCollection(ByRef $o_object, $s_TagNam^ ERROR
Cuando clico 2 veces en el error se me habre el archivo de IE.au3 y me lleva a la linea.

1787 - Func _IETagNameGetCollection(ByRef $o_object, $s_TagName, $i_index = -1)

Claro hay ya me pierdo por completo.

Se supone que la variable tiene que ser de tipo Object, pero es que siempre lo es hasta que en un momento determinado no lo es y da el fallo.

Es decir, puede estar perfectamente 2 o 5 horas sin fallo y de repetir falla o estar 2 minutos y fallar. Espero que me podáis ayudar aun que sea para evitar que se cierre el scrip y que no pare de ejecutarse.

Muchas gracias.
Avatar de Usuario
Chefito
Profesional del Autoit
Mensajes: 2035
Registrado: 21 Feb 2008, 18:42
Ubicación: Albacete/Cuenca (España)

Re: Alguien me ayuda con Error de IE

Mensaje por Chefito »

Pues eso significa simplemente lo que te dice, que la variable debe ser un tipo objetos. Vamos, que no ha pillado el objeto IE que le has dicho que pille :smt003 . Por que? Pues puede ser por varias cosas....porque no se ha cargado la página, o no se ha cargado bien, o has intentado trabajar con el objeto de esa página antes de que esta se carge, o quien sabe :smt005 . Cosas del programador o del bonito y hermoso Internet Explorer :smt005 . Habría que analizarlo.
Recuerda que hay parámetros y funciones en la udf IE para que se detenga el script hasta que se carge la página web por completo. Debes utilizarlas bien. Por ejemplo: _ieloadwait o _ieloadwaittimeout.

Puedes tratar este error antes de que se convierta en un error grave y detenga el script. Por ejemplo viendo si la variable de ese objeto contiene un objeto. Esto se hace con la función isobj(variable). Mírala en la ayuda. Simplemente debes hacer una condición con el resultado de esta función.

Otra forma más aparatosa pero muy efectiva para cualquier tipo de error que te puedan originar los objetos COM, es con la explicación y código de ejemplo que te pone en la ayuda, en AutoIt>Obj/COM reference. Aquí mira el apartado "COM Error Handling" y verás el código de ejemplo que te soluciona estos problemas. Lo que te interesa a tí, es la parte del código

Código: Seleccionar todo

$oMyError = ObjEvent("AutoIt.Error","MyErrFunc") ; Install a custom error handler
y su función MyErrFunc que es llamada cuando hay algún error en los objetos COM. Dentro de la función que es llamada, puede tratar este error como veas adecuado. En tu caso, por ejemplo, podría ser que volviese a cargar la página y a capturar y trabajar con el objeto que te haya fallado....entre otras cosas.

Saludos.
Cita vista en algún lugar de la red: En este mundo hay 10 tipos de personas, los que saben binario y los que no ;).
Responder