Página 1 de 1

Rellenar un campo "textarea" en formulario de internet

Publicado: 27 Nov 2014, 18:25
por lmrc1008
Alguien sabe como rellenar el campo tipo "textarea" dentro de un formulario web utlizando las funciones _IE.
Pongo un ejemplo de codigo HTML:

<form id="post" name="post" action="/insertar" method="post" enctype="multipart/form-data">
<input id="city" name="city" value="30" type="hidden">
<input id="title" name="title" maxlength="100" type="text">
<input id="zone" name="zone" maxlength="50" type="text">

<textarea style="display: none;" id="editor" name="editor"></textarea> AQUI VENDRIA EL RESTO DE CODIGO QUE CORRESPONDE AL EDITOR

<input id="text" name="text" type="hidden">

<input id="image[]" name="image[]" accept="image/gif, image/jpeg, image/png" class="file" type="file"><span></span></div>
<input id="image[]" name="image[]" accept="image/gif, image/jpeg, image/png" class="file" type="file"><span></span></div>

<input id="email" name="email" maxlength="255" type="text"><p>
<input name="phone" id="phone" onkeyup="mascara(this,'-',patron2,true)" size="12" type="text">

<input id="submit" name="submit" value="Publicar Anuncio" type="submit">
</form>

Re: Rellenar un campo "textarea" en formulario de internet

Publicado: 28 Nov 2014, 12:33
por PDF
Hola, aqui tienes un ejemplo:

Código: Seleccionar todo

#include <IE.au3>

Local $oIE = _IECreate("http://shrib.com/HznYebAz")

Local $oP = _IEGetObjById($oIE, "igob"); Aqui va el ID en tu caso es "editor"

Local $texto="Texto"&@CRLF&"Mas texto"

_IEDocInsertText($oP, $texto, "beforebegin")
Aqui otro teniendo en cuenta de que es un formulario:

Código: Seleccionar todo

#include <IE.au3>

Local $oIE = _IECreate("http://example.com"); La url de la pagina
Local $oForm = _IEFormGetObjByName($oIE, "post")
Local $oQuery = _IEFormElementGetObjByName($oForm,"editor")
_IEFormElementSetValue($oQuery, "Texto de Ejemplo")
_IEFormSubmit($oForm)
Saludos.

Re: Rellenar un campo "textarea" en formulario de internet

Publicado: 28 Nov 2014, 14:17
por lmrc1008
Ok, muchas gracias, pero no es suficiente, te cuento:
De esa forma si que me coge el valor, ya lo habia hecho, el problema es que el editor se queda vacio aunque el objeto si tenga ese valor y al ejecutar el submit, te dice que hay que rellenar la descricpción, claro esta controlado por codigo java script.

La solución ha sido hacer un click con el rarton en el campo y luego enviar de nuevo el texto:

MouseClick("left", 350, 500)
send($text)

No me gusta pero no he encontrado otra mejor, porque el envio por winhttp me ha dejado de funcionar, que es como lo hacia antes, han hecho cambios en la pagina.

Saludos

Re: Rellenar un campo "textarea" en formulario de internet

Publicado: 28 Nov 2014, 14:46
por PDF
Pues muestranos el codigo que llevas, o de ser posible el enlace de la pagina, para ver que hacer..

Saludos :smt023

Re: Rellenar un campo "textarea" en formulario de internet

Publicado: 28 Nov 2014, 19:30
por lmrc1008
GUICreate("Publicando...", 200, 45, -1, -1, $WS_BORDER)
Global $progressbar1 = GUICtrlCreateProgress(-1, -1, 200, 20)
GUICtrlSetColor(-1, 0x00ff00)
GUISetState()
GUICtrlSetData($progressbar1, 5)
SelecProvincia()
$oURL0="http://www.eroloquo.com/" & $Prov
$oURL = "http://www.eroloquo.com/publica-anuncios"

Local $oIE = _IECreateEmbedded()
GUICreate("GUI_IE", 800, 800, 0, 0, $WS_VISIBLE)
GUICtrlCreateObj($oIE, 0, 0, 800, 800)
WinSetTrans ("GUI_IE", "", 250);$Visible)
GUISetState(@SW_SHOWNOACTIVATE ) ;Show GUI

_IENavigate($oIE, $oURL0)
_IENavigate($oIE, $oURL)
GUICtrlSetData($progressbar1, 15)

Local $oForm = _IEFormGetObjByName($oIE, "post")
Local $oQuery = _IEFormElementGetObjByName($oForm, "title")
_IEFormElementSetValue($oQuery, $tit)
Local $oQuery = _IEFormElementGetObjByName($oForm, "text")
_IEFormElementSetValue($oQuery, $text)
Local $oQuery = _IEFormElementGetObjByName($oForm, "zone")
_IEFormElementSetValue($oQuery, $Barrio)
Local $oQuery = _IEFormElementGetObjByName($oForm, "phone")
_IEFormElementSetValue($oQuery, $tfn)
Local $oQuery = _IEFormElementGetObjByName($oForm, "email")
_IEFormElementSetValue($oQuery, "[email protected]")

Local $oQuery = _IEFormElementGetCollection($oForm, 3)
_IEFormElementSetValue($oQuery, $text)

WinActivate("GUI_IE")
MouseClick("left", 350, 500)
send($text)

Re: Rellenar un campo "textarea" en formulario de internet

Publicado: 28 Nov 2014, 21:48
por PDF
Bueno al parecer se trata de un frame, no de un textarea, entonces lo podemos hacer asi:

Código: Seleccionar todo

Local $oFrame = _IEFrameGetCollection($oForm, "iFrame")
_IEBodyWriteHTML($oFrame, "Hello <b><font color=red>iFrame!</font></b>")
Inclusive le puedes agregar codigo html. saludos!

Re: Rellenar un campo "textarea" en formulario de internet

Publicado: 29 Nov 2014, 17:42
por Chefito
Otra solución más clásica:

Código: Seleccionar todo

#include <IE.au3>

; ejemplo de rellenado de campos input type de la página

$oIE = _IECreate("http://www.eroloquo.com/publica-anuncios")
$textarea=_IEGetObjById($oIE,"editor")
$textarea.value="La forma simple y normal de toda la vida ;) <b><font color=red>Y texto con etiquetas</font></b>"
Y respecto a que no lo puedes hacer con la librería winhttp.....no se no se, seguro que se puede, pero habría que estudiar el código si te han puesto alguna traba :smt024 .

Saludos.