Introducir Texto en un input web

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

Introducir Texto en un input web

Mensaje por dacu »

Buenas. Me ha sido imposible y eso que tengo experiencia en interactuar con elementos web. A ver si me echáis una mano xD.

Código: Seleccionar todo


    <div class="popover_inner">
                        <label for="post[three]">Enlace de redirección</label>
                        <div>
                            <input class="text_field" placeholder="http://" name="post[three]" maxlength="200" size="40" value="" autocomplete="off" type="text">
                        </div>
                    </div>

Creo que no hace falta decir que he estado usando.

_IETagNameGetCollection
$oInput.name
etc..etc.

;========================================================== EDIT 1

Digamos que por aquí lo encuentro.

Código: Seleccionar todo



; This may need more drilling down into the DOM...
$colInputs = _IETagNameGetCollection($IE, "input")
$sMsg = ""
For $oInput In $colInputs
    $sMsg &= "Input type=" & $oInput.type & " - value=" & $oInput.value & " - placeholder=" & $oInput.placeholder & @CRLF
	If String($oInput.placeholder) = "http://"  AND String($oInput.value) = "0"  Then

	_IEDocInsertText($oInput, "hola")
	_IEAction($oInput, "click")

	EndIf

Next

Lo que sucede es que si _IEDocInsertText pudiese entender esto: _IEDocInsertText($$oInput.value, "hola"). Ya que es hay donde tengo que meter el valor. en el Value. XD

;========================================================== EDIT 2

Um digamos que lo he encontrado.

Código: Seleccionar todo

_IEFormElementSetValue($oInput, "http://www.google.es/")
Pero no entiendo por que funciona igualmente me sirve. Pero sigo acepando diferentes formas de hacerlo.
avechuche
Hacker del Foro
Mensajes: 188
Registrado: 13 Ago 2009, 09:53

Re: Introducir Texto en un input web

Mensaje por avechuche »

Te paso una solución algo mas sencilla

Código: Seleccionar todo

#include <IE.au3>

$oIE = _IECreate("file:///C:/Documents%20and%20Settings/Administrador/Escritorio/prueba.html")

$input = _IEGetObjByName($oIE, "post[three]")
$input.value = "Hola"
dacu
Hacker del Foro
Mensajes: 106
Registrado: 20 May 2010, 00:09

Re: Introducir Texto en un input web

Mensaje por dacu »

avechuche escribió:Te paso una solución algo mas sencilla

Código: Seleccionar todo

#include <IE.au3>

$oIE = _IECreate("file:///C:/Documents%20and%20Settings/Administrador/Escritorio/prueba.html")

$input = _IEGetObjByName($oIE, "post[three]")
$input.value = "Hola"
Muchas Gracias, Pero no termino de entender como devolverle el valor. Después como continuaría?
avechuche
Hacker del Foro
Mensajes: 188
Registrado: 13 Ago 2009, 09:53

Re: Introducir Texto en un input web

Mensaje por avechuche »

No entiendo la nueva pregunta :) :) :)

Hasta donde yo hice, hago lo mismo que vos, poner el texto "Hola" en el input que vos queres, pero de forma más resumida, lo capture directamente por el nombre. Si a lo que te referis es a hacerle clic es lo mismo "_IEAction($oInput, "click")" o directamente con "$oInput.Click()", lo que no entiendo para que queres hacerle un clic al input, si es para darle focus se hace asi "$oInput.Focus().
Avatar de Usuario
Chefito
Profesional del Autoit
Mensajes: 2035
Registrado: 21 Feb 2008, 18:42
Ubicación: Albacete/Cuenca (España)

Re: Introducir Texto en un input web

Mensaje por Chefito »

Se puede hacer lo que tu quieres de muchas formas.
dacu escribió:Um digamos que lo he encontrado.Código: Seleccionar todo_IEFormElementSetValue($oInput, "http://www.google.es/")Pero no entiendo por que funciona igualmente me sirve.
Pues no tiene mucho misterio. Simplemente es una función que hace lo que tu quieres hacer, dar un valor al elemento indicado. En este caso el elemento es un Input, y el valor es el texto que quieres darle. Sin más.

Respecto a lo que dice al final, yo creo que a lo que se refiere es a como enviar los datos del input. Yo pienso que la forma en la que lo has hecho está bien, ya que por lo que veo el input está dentro de un formulario, al que luego puedes enviar los datos gracias a la función _IEFormSubmit.
Si lo haces de la forma que dice el compañero avechuche, como te indica, debes hacer un click al botón de envío de datos (seguro que hay un botón para enviarlo en la página web).

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 ;).
dacu
Hacker del Foro
Mensajes: 106
Registrado: 20 May 2010, 00:09

Re: Introducir Texto en un input web

Mensaje por dacu »

Muchas Gracias a los dos. Es que por un momento no podia creer que este codigo

Código: Seleccionar todo

$input.value = "Hola"
Le lanzase un valor a value. Por lo tanto esto ya me sirve para mucho mas. Con este dato puedo cambiar .value por prácticamente lo que quiera.

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

Re: Introducir Texto en un input web

Mensaje por Chefito »

dacu escribió:Muchas Gracias a los dos. Es que por un momento no podia creer que este codigoCódigo: Seleccionar todo$input.value = "Hola"Le lanzase un valor a value
Por que no? Es precisamente para lo que sirve :smt002 . Piensa que estás trabajando con una variable que contiene un objeto. Este objeto es un input. Y gracias a esto puedes trabajar con esta variable como si estuviese utilizando vbs, javascript, php, etc con este objeto. En resumen, puedes utilizar todas sus propiedades, métodos y eventos de este objeto o cualquier otro que referencies.

Simplemente mira el contenido de las funciones udf _IE y verás como los referencia y trabaja con ellos.

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 ;).
qpongo
Hacker del Foro
Mensajes: 110
Registrado: 10 Abr 2013, 15:53
Ubicación: Madrid

Re: Introducir Texto en un input web - 2 -

Mensaje por qpongo »

Hola,
Como mi consulta tiene que ver con esta consulta anterior he querido ponerla aquí.
Quiero sobre todo entender como al entrar en una web puedo seleccionar un elemento de un formulario y asignarle un valor.

Actualmente uso estas líneas de código que me funcionan (con el usuario y clave reales puestos claro) pero sé que es una forma muy rudimentaria de hacerlo y en el futuro necesitaré llenar muchos campos de varias web.

Código: Seleccionar todo

#include <IE.au3>
$IeObj=_IECreate("https://www2.bancopopular.es/empresasN")
WinWaitActive("Banco Popular: Banco online, Depósitos, Tarjetas, Nóminas, Fondos de Inversión - Windows Internet Explorer","")
Sleep(400)
Send("USUARIO")
Sleep(100)
Send("{TAB}")
Sleep(100)
Send("CLAVE")
Sleep(40)
Send("{ENTER}")




Sinceramente me leí ayer los post del tema y no acabo de enterarme :smt018

¿Como identifico el nombre del campo, lo selecciono y asigno el valor?

Viendo el código fuente de la página veo que :

$("#formUser").html(JLI_txt6);
$("#formPass").html(JLI_txt7);

parece que son los campos que usa la web pero no se si necesito ver el código fuente y decir exactamente como se llama el campo o no hace falta. Lo que pretendo es hacerlo de la forma más segura (que no halla errores y ponga un valor en un campo que no es) y que funcione en cualquier pc una vez pasado a .exe

Os pongo este ejemplo porque lo conozco y me enteraré mejor si hablamos de esta página.

Muchas gracias por vuestra ayuda.

qpongo
Avatar de Usuario
Dany
Profesional del Autoit
Mensajes: 651
Registrado: 28 Mar 2012, 22:49

Re: Introducir Texto en un input web

Mensaje por Dany »

ese es un popup? o un form web normal?

EDITO: prueba asi:

Código: Seleccionar todo

#include <IE.au3>

Local $oIE = _IECreate("https://www2.bancopopular.es/empresasN")
Local $oForm = _IEFormGetObjByName($oIE, "identifica")
Local $usuario = _IEFormElementGetObjByName($oForm, "PAN_IN")
_IEFormElementSetValue($usuario, "Dany")
Local $clave = _IEFormElementGetObjByName($oForm, "contras_IN")
_IEFormElementSetValue($clave, "password")
Saludos
  • ............................................Imagen
    ......................................Imagen
qpongo
Hacker del Foro
Mensajes: 110
Registrado: 10 Abr 2013, 15:53
Ubicación: Madrid

Re: Introducir Texto en un input web

Mensaje por qpongo »

Es un web normal....

Funciona perfectamente lo que has escrito.... pero no entiendo como funciona jeje perdona...
Necesito entenderlo porque lo voy a tener que hacer a menudo

¿Podrías explicarme lo que hace cada línea como si fuera tonto? (si puedes)
Lo del "PAN_IN" in contras_in" tengo aún menos idea de lo que es.

Gracias por tu paciencia...

qpongo
Avatar de Usuario
Dany
Profesional del Autoit
Mensajes: 651
Registrado: 28 Mar 2012, 22:49

Re: Introducir Texto en un input web

Mensaje por Dany »

jajajajajaja ahí te va.

ahí te va baja el vídeo y míralo.

http://www.sendspace.com/file/u2azpl

espero que te quede claro. sino pregunta
saludos
  • ............................................Imagen
    ......................................Imagen
qpongo
Hacker del Foro
Mensajes: 110
Registrado: 10 Abr 2013, 15:53
Ubicación: Madrid

Re: Introducir Texto en un input web

Mensaje por qpongo »

:smt003 :smt005

¡Lo que se aprende contigo! Una imagen vale por 1000 palabras y un video... ni te cuento...
Pensaba que teníais una varita mágica y os sacabais los inputs de la chistera.... jeje

Gracias, ahora me falta asimilarlo y utilizar todo unas cuantas veces para que se me quede.

Me está encantando esto...

Jose
qpongo
Avatar de Usuario
Dany
Profesional del Autoit
Mensajes: 651
Registrado: 28 Mar 2012, 22:49

Re: Introducir Texto en un input web

Mensaje por Dany »

Y eso que lo mio no es IE. jajajaja

fíjate bien siempre en los ejemplos de la ayuda son muy muy muy buenos.

sigue practicando y no dudes en preguntar.

saludos
  • ............................................Imagen
    ......................................Imagen
qpongo
Hacker del Foro
Mensajes: 110
Registrado: 10 Abr 2013, 15:53
Ubicación: Madrid

Re: Introducir Texto en un input web

Mensaje por qpongo »

Hola Dany y compañeros,

Hace tiempo me ayudaste con la entrada en este tipo de páginas; el caso es que una de las que uso me la han cambiado y no se como enviar el formulario.
Rellena los inputs pero a la hora de enviarlo me dice Servicio Temporalmente no disponible. ¿Debo hacerlo de otra forma?

Código: Seleccionar todo

	#include <IE.au3>
	Local $oIE = _IECreate("https://www.bbvanetcash.com/local_kyop/KYOPSolicitarCredenciales.html")
	Local $oForm = _IEFormGetObjByName($oIE, "logonForm")
	Local $empresa = _IEFormElementGetObjByName($oForm, "cod_emp"); "empresa")
	Local $usuario = _IEFormElementGetObjByName($oForm, "cod_usu");usuario
	Local $clave = _IEFormElementGetObjByName($oForm, "eai_password");clave_acceso
	;Local $o_object = _IEFormElementGetObjByName($oForm, "Entrar"); aceptar
	_IEFormElementSetValue($empresa, "clave1");clave1
	_IEFormElementSetValue($usuario, "clave2");clave2
	_IEFormElementSetValue($clave, "clave3");clave3

	; Hasta aquí me funciona todo bien, si le doy click manualmente entra y todo ok
	; Pero si lo hago enviando el formulario con _IEFormSubmit me dice que Servicio Temporalmente no disponible.

	Sleep(1000)
	_IEFormSubmit($oForm)

	; ¿Como hago click en 'Entrar'?


Gracias!!! :-)



Dany escribió:Y eso que lo mio no es IE. jajajaja

fíjate bien siempre en los ejemplos de la ayuda son muy muy muy buenos.

sigue practicando y no dudes en preguntar.

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

Re: Introducir Texto en un input web

Mensaje por Chefito »

Utiliza esto para cliquearlo:

Código: Seleccionar todo

Local $obutton = _IETagNameGetCollection($oIE, "button", 0)
$obutton.fireevent("onclick")
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 ;).
qpongo
Hacker del Foro
Mensajes: 110
Registrado: 10 Abr 2013, 15:53
Ubicación: Madrid

Re: Introducir Texto en un input web

Mensaje por qpongo »

Pues... te iba a decir que no funciona, pero era un error de la página que no funcionaba bien :-)

Todo correcto Chefito, MUCHAS GRACIAS
Sólo una duda, por que lo que quiero es enterarme y no tener que preguntar si puedo apañarme...

¿Me puedes decir lo que hace cada línea? No entiendo si "button" es el nombre concreto del objeto o simplemente es buscar un botón; y la segunda línea aún me entero menos.. perdona.

Código: Seleccionar todo

Local $obutton = _IETagNameGetCollection($oIE, "button", 0)
	$obutton.fireevent("onclick")
Gracias otra vez :smt006

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

Re: Introducir Texto en un input web

Mensaje por Chefito »

Pues la primera línea hace simplemente lo que dice la ayuda, busca cualquier objeto de la página según su tag (etiqueta en español). Que son las etiquetas? Pues todo lo que esté entre <....> en el código html de una página web, por ejemplo body, form, html, head, input, table, y muchas muchas muchas más :smt001 . En este caso la etiqueta que te interesa capturar es la única que se llama button en la página web. Como esta función te captura un array de objetos con la misma etiqueta en todo el código html, pues tienes que indicarle en el tercer parámetro de esta función cual de ellas quieres. Como en esta página solo hay una, pues cojo la primera que captura, que es la 0.

Una vez que tienes el objeto capturado (el botón), ya puedes trabajar con él. En este caso utilizo un método llamado fireevent. Que hace este método? Pues como su nombre indica en ingles, dispara un evento al objeto enlazado. Puedes lanzar muchos eventos, los que acepte el objeto. En este caso nos interesa lanzar un click, y eso es lo que hacemos con onclick :smt002 . Para saber más sobre esto, busca en internet el método fireevent y los eventos que puedes utilizar, por ejemplo, en javascript (o vbscript).

Espero haberte aclarado algo.

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 ;).
qpongo
Hacker del Foro
Mensajes: 110
Registrado: 10 Abr 2013, 15:53
Ubicación: Madrid

Re: Introducir Texto en un input web

Mensaje por qpongo »

Hola, muchisimas gracias.... ¡lo he entendido! jeje
De esto de _IE.... tengo que aprenderlo todo porque es muy útil.

qpongo
Responder