ayuda con IE.au3

Pregunta Sin Miedo no te cortes cualquier cosa para empezar - Autoit se comienza facilmente.Para Ordenes o Comandos sueltos. Ver nota como preguntar.
Responder
greenber
Mensajes: 9
Registrado: 14 Feb 2012, 13:42

ayuda con IE.au3

Mensaje por greenber »

Hola soy nuevo en esta maravilla de autoit.

estoy tratando de hacer un script para logearme en una web y hacer determinadas acciones como acceder a determinados menús y contenidos de las tablas, realizar determinadas acciones como clikar un enlace. de momento solo he conseguido modificar el valor del formulario de logeo con IEFormElementGetCollection y IEFormElementSetValue.alguien sabe si existe alguna función para las acciones que he comentado antes?.La verdad que estoy verde todavía y agradezco cualquier ayuda.

un saludo.
Avatar de Usuario
arkcrew
Profesional del Autoit
Mensajes: 506
Registrado: 28 Sep 2009, 19:17
Ubicación: Granada, España
Contactar:

Re: ayuda con IE.au3

Mensaje por arkcrew »

Hola,

La verdad no se yo tampoco muy bien como podría hacerse, es cuestión de como funcione la página, pero prueba a mirarte _IEFormSubmit() y como se rellenarían los campos que deseas manejar.

Espero que te ayude..

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

Re: ayuda con IE.au3

Mensaje por Chefito »

Se puede hacer casi todo en una web con autoit. Mira bien la udf IE. También puede que te interese la función _INetGetSource para recuperar el código de una página.

Por ejemplo, para cliquear un link tienes _IELinkClickByIndex y _IELinkClickByText, según lo quieras hacer por su posición o texto del link. Con _IELinkGetCollection obtienes toda la colección de link que haya en una página web, para luego tratarla como tú quieras.
Respecto a las tablas, tienes las funciones _IETableGetCollection y _IETableWriteToArray. La primera te devuelve una colección de todas las tablas que hayan en una página web, y la segunda se utiliza para leer y almacenar los datos en un array (variable matriz).

Si vas a utilizar autoit para interactuar con webs, leete atentamente la udf IE, que seguro que ahí estará todo lo que necesites. Si por casualidad no está (dificil pero posible :smt003 ), puedes trabajar directamente con los objetos dhtml, igual que lo haría cualquier otro lenguaje. Por ejemplo, vbs o javascript. Estos códigos son bastante fáciles de convertir a autoit.

También te puede interesar las funciones para el tratamiento de cadenas (string, texto). Piensa que muchas veces, toda la información que necesitas recuperar de una web está en el código fuente de la página (html), por tanto puedes conseguirla de ahí. Y además, este método suele ser más rápido que accediendo a ella y tratando sus objetos. Mírate las funciones string y la udf string.

Mira en la ayuda todo lo que te digo, sus ejemplos y demás. Te sacarán de muchas dudas.

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 ;).
greenber
Mensajes: 9
Registrado: 14 Feb 2012, 13:42

Re: ayuda con IE.au3

Mensaje por greenber »

Pues muchas gracias por las respuestas, me han sido de gran ayuda. :smt002
greenber
Mensajes: 9
Registrado: 14 Feb 2012, 13:42

Re: ayuda con IE.au3

Mensaje por greenber »

Hola de nuevo, primero darte las gracias Chefito por tu ayuda.

Sigo con mi programa de navegación pero ahora me surge un problema.

como consigo obtener la url actual para rellenar un formulario, es decir, supongomamos que hasta llegar al formulario he tenido que logearme, y pulsar un link, con lo que nos daria una url nueva.

cuando yo pongo
$oIE = _IECreate($Url);

....me logeo

...busco el link y lo pulso

$oLinks = _IELinkGetCollection($oIE)
For $oLink In $oLinks
$sLinkText = _IEPropertyGet($oLink, "innerText")
If StringInStr($sLinkText, $sMyString) Then
_IEAction($oLink, "click")
ExitLoop
EndIf
Next

..relleno el formulario

$oForms = _IEFormGetCollection($oIE)
$oform= _IEFormGetObjByName ($oForms, "formulario")
$oDiv1 = _IEFormElementGetObjByName($oform, "campo1")
$oDiv2 = _IEFormElementGetObjByName ($oform, "campo2")
_IEFormElementSetValue($campo1, "texto de prueba")
_IEFormElementSetValue($campo2, "texto de prueba2")

esto no me hace nada pues busca en la url que había en el paso anterior.

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

Re: ayuda con IE.au3

Mensaje por Chefito »

Para obtener la url del IE utiliza esto _IEPropertyGet($oie,"locationurl") . Mira en la ayuda todas las cosas que puedes obtener con esta función. Son muy interesantes.

Puede que también te interese obtener la url anterior a la que fue referida la página actual. Esto solo se consigue si se hace desde un link. Es esto: _IEPropertyGet($oie,"referrer"). También está en la ayuda explicado.

Para cargar una página en un objeto IE creado con _iecreate, utiliza _ienavigate.

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 ;).
greenber
Mensajes: 9
Registrado: 14 Feb 2012, 13:42

Re: ayuda con IE.au3

Mensaje por greenber »

De nuevo gracias, tu ayuda me sirvió. te comento lo que me pasaba.

entre una acción y otra, por ejemplo clikar un link y rellenar un formulario, me daba un error, el error era que el script iba mas rápido que la navegación por el explorer,por eso cuando se cargaba el formulario en el explorer el script ya había ejecutado la linea de relleno del formulario, y al no encontrar el formulario no hacia nada,por eso use las funciones de url actual y navegación para encontrar el error.(perdón por mi ignorancia pero todavía hay cosas que desconozco, pensaba que el flujo se controlaba solo)
Dicho error lo corregí usando un Sleep (2000) entre acciones (aunque me imagino que esto no es lo correcto).¿que manera hay de que se detenga o compruebe antes de seguir ejecutando el código?

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

Re: ayuda con IE.au3

Mensaje por Chefito »

Para esperar a que una página se carge entera (detienen el script hasta que se carga), tienes las funciones _ieloadwait y _ieloadwaittimeout. Tienes que ponerlas justo después de cliquear un link, si esta acción es que hace que carge la página.
Mira en la ayuda, en el foro y demás que hay muchos ejemplos.

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