Página 1 de 1

Introducir Texto en un input web

Publicado: 02 Jun 2013, 17:11
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.

Re: Introducir Texto en un input web

Publicado: 03 Jun 2013, 00:50
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"

Re: Introducir Texto en un input web

Publicado: 03 Jun 2013, 15:54
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?

Re: Introducir Texto en un input web

Publicado: 03 Jun 2013, 19:59
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().

Re: Introducir Texto en un input web

Publicado: 03 Jun 2013, 20:18
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.

Re: Introducir Texto en un input web

Publicado: 04 Jun 2013, 15:48
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.

Re: Introducir Texto en un input web

Publicado: 04 Jun 2013, 16:12
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.

Re: Introducir Texto en un input web - 2 -

Publicado: 25 Sep 2013, 17:19
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

Re: Introducir Texto en un input web

Publicado: 25 Sep 2013, 17:22
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

Re: Introducir Texto en un input web

Publicado: 25 Sep 2013, 17:59
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

Re: Introducir Texto en un input web

Publicado: 25 Sep 2013, 18:17
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

Re: Introducir Texto en un input web

Publicado: 25 Sep 2013, 18:34
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

Re: Introducir Texto en un input web

Publicado: 25 Sep 2013, 18:39
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

Re: Introducir Texto en un input web

Publicado: 30 Abr 2014, 17:34
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

Re: Introducir Texto en un input web

Publicado: 01 May 2014, 02:26
por Chefito
Utiliza esto para cliquearlo:

Código: Seleccionar todo

Local $obutton = _IETagNameGetCollection($oIE, "button", 0)
$obutton.fireevent("onclick")
Saludos.

Re: Introducir Texto en un input web

Publicado: 01 May 2014, 21:52
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

Re: Introducir Texto en un input web

Publicado: 02 May 2014, 18:29
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.

Re: Introducir Texto en un input web

Publicado: 03 May 2014, 11:26
por qpongo
Hola, muchisimas gracias.... ¡lo he entendido! jeje
De esto de _IE.... tengo que aprenderlo todo porque es muy útil.

qpongo