submit no me funciona en IE

569 views
Skip to first unread message

JesusQuin

unread,
Apr 22, 2013, 9:27:38 PM4/22/13
to publice...@googlegroups.com
Hola todos, este código lo encontre aqui en el foro, pero igual no hace el submit en mi equipo.
Lo único que noto es que carga como HTTPS://
No tengo ni idea que anda mal, si es el corta fuegos, o las opciones de internet en el explorador.
Lo pruebo en dos entornos diferentes, W7 32bits e IE 9, W8 64bits e IE 10
Gracias por su colaboracion.
oIE = createobject( "internetexplorer.application" )
oIE
.Visible = .t.
oIE
.Navigate( "www.google.com" )
DO WHILE oIE
.ReadyState != 4
ENDDO
loDoc
= oIE.Document && get the Document object
loForm
= loDoc.forms(0) && get the first form object
loForm
.Item("q").Value = "foxpro" && this is the field for the search string
loform
.Submit() && submit the form

Ricardo Pina

unread,
Apr 22, 2013, 10:35:19 PM4/22/13
to Grupo VFP
Hola Jesus
 
Probá
 
oIE = createobject( "internetexplorer.application" )
oIE
.Visible = .t.
oIE
.Navigate( "www.google.com" )
DO WHILE oIE
.ReadyState != 4
ENDDO
loDoc
= oIE.Document && get the Document object
loForm
= loDoc.forms(0) && get the first form object
loForm
.Item("q").Value = "foxpro" && this is the field for the search string

loform
.Submit("q") && submit the form

Saludos



--
            

                   Ricardo Pina

Desarrollo y Servicios Informáticos

                  Profesionales
               www.dsip.com.ar

 

 

JesusQuin

unread,
Apr 23, 2013, 5:23:53 PM4/23/13
to publice...@googlegroups.com
Hola Ricardo, ante todo gracias por colaborarme.
Y sí, como lo indicaste, google hace el submit desde el campo "q" o de busqueda y desde otros más, practicamente desde cualquiera con la sintaxis ObjetoForm.Submit("Name"), debo indicar que no sabia que esto se podia hacer, muchas gracias.
 
El verdadero problema es que tengo un progrma en producción desde hace muchos años, y, miestras mis clientes estubieron con WinXP e IE menor que 9 nunca hubo problema, además se trata de un sitio oficial (del estado), y se diligencia información en 10 formularios diferentes, los primeros 8 dan como resultado un formulario completo con algo asi como cien casillas y se diligencian una vez por cada formulario completo, el noveno es repetitivo, se adicionan diferentes datos pero con la misma estructura, el decimo es de consulta e impresión. Yo no tengo las claves de ingreso, solo me las dan cuando hay que hacer pruebas y debo estar en sus oficinas para hacerlas, por eso mi solicitud de ayuda es más compleja, no conocen el diseño de cada página, claro que yo tampoco, ese trabajo lo hice a error y ensayo, me tomo más de seis meses terminarlo.
 
Pero este nuevo ejemplo cubre un 90% del problema real.
oIE = createobject( "internetexplorer.application" )
oIE.Visible = .t.
oIE.Navigate( "hotmail.com" )
DO WHILE oIE.ReadyState != 4 OR TYPE('oIE.Document') != 'O'
 * Cuando oIE.ReadyState = 4 no necesariamente se ha creado el objeto Document en el DOM??

ENDDO
loDoc = oIE.Document && get the Document object
INKEY(1) && En espera de que se forme el objeto Forms. No se si todo document tiene asociado un form
*!* EXPLORACIÓN
*!* Forms(0), Name: f1
*!* Items(0), Name: login Id: i0116, Type: text
*!* Items(1), Name: passwd Id: i0118, Type: password
*!* Items(2), Name: KMSI Id: idChkBx_PWD_KMSI0Pwd, Type: checkbox
*!* Items(3), Name: SI Id: idSIButton9, Type: submit
WITH oIE.document.f1
 * Diligenciamiento de casillas
 * Con estos valores debe restbleser la página con el siguiente mensaje:
  * Esta cuenta Microsoft no existe.
  * Escribe otra dirección de correo electrónico u obtén una nueva cuenta.
 .Item("login").value = 'jesu...@hotmail.com'
 .Item("passwd").value = 'Clave123'
 * Envío del formulario diligenciado
 
 * Haciendo ckick en el boton por medio de su id.
* oIE.document.getelementbyid("idSIButton9").click() && Falla
 * Haciendo submit en el formulario
 .submit() && Falla
 * Haciendo click en el boton dentro del formulario por el tag name
* .SI.click() && Falla
 * Haciendo submit al elemento SI
* .Submit("SI") && Falla, se restablese el formulario a sus valores default
 * Haciendo submit al elemento login
* .Submit("login") && Falla, se restablese el formulario a sus valores default
 * Haciendo submit al elemento passwd
* .Submit("passwd") && Falla, se restablese el formulario a sus valores default
ENDWITH
RETURN

Como puede ver hice todas las pruebas de envío que conozco y todas fallan, lo único rraro que observo en el navegador es que las url de google como hotmail y la del problema real entran automaticamente por HTTPS:// aun si la inicio con HTTP://.
 
No tengo ni idea cual es el conflicto, me gustaria que corrieran el ejemplo en sus equipos y si corre bien quiza me podrian ayudar indicandome el entorno, como lo comente antes yo lo pruebo con Win 7 a 32 bits e IE 9, Win 8 a 64 bits e IE 10.
 
Gracias por su colaboración y un saludo especial para todos.
 

JesusQuin

unread,
Apr 23, 2013, 7:56:13 PM4/23/13
to publice...@googlegroups.com
Rogando por que todo salga bien, hice unas prubas utilizando las sintaxis ObjectForm.Submit("") y ObjectForm.Submit("Name") ambos funciona en los dos entornos de prueba, ahora bien, aún no tengo idea de que hace cada uno, pero les comento lo que requiero, en todos los submits debo hacerlos sobre el boton Type submit, pues estos ejecutan acciones adicionales de scripts, exepto en uno en donde el script hace unos cálculos errados y daña los resultados, despues en otras tareas no me las permite por lo mismo que el dañó.
 
Un cordial saludo para todos, Jesusquin

JesusQuin

unread,
Apr 23, 2013, 9:59:47 PM4/23/13
to publice...@googlegroups.com
La solución no sirve pues la sintaxis descrita solo envia el formulario, asi que sí el boton ejecuta algun scrpt no se ejecuta y tampoco se como se soluciona esto.
Cordial saludo, Jesusquin

Miguel A.

unread,
Apr 24, 2013, 7:08:01 AM4/24/13
to publice...@googlegroups.com
Si no puedes ver el código de la página te va a resultar muy difícil resolverlo. En el ejemplo de abajo hay que rellenar 2 campos con el número de expediente y el idioma y luego hace clic en un botón que tiene un javascript, pues yo lo que hago así y funciona, no submito el botón, ejecuto el javascript que está en el mismo:
 
objeto.document.ctmSubmit.idappli.value = numx
objeto.document.ctmSubmit.language.value="en"
objeto.navigate2("javascript:document.ctmSubmit.idxidappli.value='0';DetailedTrademark('1');")
Espero que te sirva de ayuda.

JesusQuin

unread,
Apr 24, 2013, 2:46:59 PM4/24/13
to publice...@googlegroups.com
Hola todos y muchas gracias por su colaboración, laverdad es que el problema sigue vivo y es por eso que les pido ayuda, como pueden ver en el segundo ejemplo que postee no tengo ninguna manera de pasar la página de autenticación, lo dire de otra manera, sí quicieramos automatizar nuestra cuenta de correo hotmail y lo intentaran vía IE que es lo menos difil desde VFP ¿que concluciones sacariamos del fallo?
 
Primero lo que dice Microsoft.
  • Que pueden ser los complementos activos del IE, no ya los desactive todos y el problema persiste.
  • Que pueden ser impresoras no compatibles con la versión del IE, tampoco, las desinstale todas.
  • Desabilitar la depuración de scripts (Internet Explorer), Desabilitar la depuración de scripts (Otros), Desactivar Mostrar una notificación por cada error de script, vía Opciones avanzadas de internet, hecho.
  • Restablecer la configuración de internet explorer a su estado predeterminado, por la misma vía, hecho,
  • Reiniciar el equipo, hecho.
Como pueden ver, al menos todo lo que he encontrado lo he hecho al pie de la letra y no funciona.
 
Ahora mi opinión
  • Hay algun valor de configuración que lo esta matando, que pueden ser del mismo IE, Java, Silverlight, Flash, etc., es mi idea principal.
  • Es un bug en las últimas versiones de IE, no creo, pues en adelante no podriamos automatizar nada a través de IE, seria fatal.
Estas razones son las que me llevan a solicitar a la comunidad que por favor hagan las pruebas en sus equipos y si en los que corre el ejemplo, valga la redundacia, por favor me informa del entorno de ejecuvión, entre otro el OS, IE, Java y si es posible postear las imagenes de configuración de éstos, yo las revisaré y creo que podremos salir del hueco.
 
Miguel, aunque es dispendioso por lo de ir dode mi cliente y el problema de claves y eso, pero lo hago todas las veces que me lo pidan pues la ayuda es para mí, no hay problema, si puedo ver el código lo que quise decir es no sé que es todo eso, ahora sí al problema, afortunadamente el sitio web automatizado me admite hacer submit al form con la sintaxis oIE.Document.Forms(n).Submit("") eso ya es vastante, lo que no se podido es hacer el el click en el botón que lanza el submit, Ej: oIE.Document.Forms(0).BUTTON1.Submit() de la línea de código HTML siguiente:
 
<input name="BUTTON1" id="BUTTON1" onclick="CALCULAR_LIQUIDACION(1847.02,0,0,0,0);if (CONTROL_IVA_DIFERENCIAL(1847.02,0,0,0,0) && validarCamposNumericos()) { submit(); }" type="button" ;="" value="SALVAR"/>
Si entiendo bien, con la instrucción objeto.navigate2('javasript...') podría hacer que se ejecuten los scripts contenidos en el botón, sí lo que afirmo es cierto aún no se como hacerlo y tu ejemplo no me queda claro, y no es tu culpa, es debido a mi ignoracia, ayudame por favor:
  1. objeto.navigate2() no sabia de esa función, asi que si me ilustras un poco sobre la sematica te lo agredecere.
  2. Como quedaria la función de acuerdo con el código del botón BUTTON1 detallado más arriba?, esto es para poder entender y yo hacer los demás.
  3. Confirmame si estoy en lo cierto por favor, primero hago que se ejecuten los scripts y luego hago el submit al formulario?
Muchas gracias por todo y espero me puedan colaborar un poco más.
 
Un saludo especial para todos, Jesusquin

Miguel A.

unread,
Apr 25, 2013, 3:38:09 AM4/25/13
to publice...@googlegroups.com
Para hacer clic en el botón tienes que poner simplemente esta línea:
 
objeto.document.Form.BUTTON1.click()
Donde "Form" ha de ser el nombre que tenga el formulario web
 
Espero que esto te ayude.
Un saludo,
 
Miguel A.

JesusQuin

unread,
Apr 25, 2013, 6:28:06 AM4/25/13
to publice...@googlegroups.com

Miguel, precisamente esa es la sintaxis que he usado siempre pero ya no funciona, por favor corre el ejemplo, en la sección enviar formulario diligenciado están las diferentes opciones que he utilizado para hacer el submit, solo debes eliminar el asterisco de la que quieras probar.

Saludos Jesusquin

Mauricio R. Molinero

unread,
Apr 25, 2013, 10:09:56 AM4/25/13
to publice...@googlegroups.com
No te conviene hacer el login mediante algun servicio Web y despues mostras la web?

Saludos!

Mauricio R. Molinero,

JesusQuin

unread,
Oct 11, 2013, 1:38:24 PM10/11/13
to publice...@googlegroups.com
Hola todos, sin entender el porque de este comportamiento del IE 10, lo pude resolver agregando el domino de sitio a la lista de configuración de vistas de compatibilidad.

Jorge Blas Diaz Armesto

unread,
Oct 15, 2013, 2:57:29 PM10/15/13
to publice...@googlegroups.com

El abre el google pero cuando va a abrir la venta de google donde va foxpro da error de internet explorer no existe que suce también lo he probado yo

Luis Salazar

unread,
Oct 17, 2013, 3:23:33 PM10/17/13
to publice...@googlegroups.com
Hola tome este codigo y lo ejecute en mi maquina
y me conecta a Google...
 
?????
Reply all
Reply to author
Forward
0 new messages