ayuda con IE.au3
ayuda con IE.au3
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.
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.
- arkcrew
- Profesional del Autoit
- Mensajes: 506
- Registrado: 28 Sep 2009, 19:17
- Ubicación: Granada, España
- Contactar:
Re: ayuda con IE.au3
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!
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!
ArkCrew
http://www.nodluna.blogspot.com
http://www.nodluna.blogspot.com
- Chefito
- Profesional del Autoit
- Mensajes: 2035
- Registrado: 21 Feb 2008, 18:42
- Ubicación: Albacete/Cuenca (España)
Re: ayuda con IE.au3
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 ), 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.
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 ), 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 ;).
Re: ayuda con IE.au3
Pues muchas gracias por las respuestas, me han sido de gran ayuda.
Re: ayuda con IE.au3
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???
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???
- Chefito
- Profesional del Autoit
- Mensajes: 2035
- Registrado: 21 Feb 2008, 18:42
- Ubicación: Albacete/Cuenca (España)
Re: ayuda con IE.au3
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.
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 ;).
Re: ayuda con IE.au3
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.
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.
- Chefito
- Profesional del Autoit
- Mensajes: 2035
- Registrado: 21 Feb 2008, 18:42
- Ubicación: Albacete/Cuenca (España)
Re: ayuda con IE.au3
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.
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 ;).