Página 1 de 1

ayuda con IE.au3

Publicado: 14 Feb 2012, 15:44
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.

Re: ayuda con IE.au3

Publicado: 15 Feb 2012, 22:25
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!

Re: ayuda con IE.au3

Publicado: 16 Feb 2012, 18:06
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.

Re: ayuda con IE.au3

Publicado: 20 Feb 2012, 15:22
por greenber
Pues muchas gracias por las respuestas, me han sido de gran ayuda. :smt002

Re: ayuda con IE.au3

Publicado: 06 Mar 2012, 20:00
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???

Re: ayuda con IE.au3

Publicado: 08 Mar 2012, 20:22
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.

Re: ayuda con IE.au3

Publicado: 27 Mar 2012, 18:12
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.

Re: ayuda con IE.au3

Publicado: 27 Mar 2012, 20:48
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.