** NORMAS DEL FORO **
Inicio del foro Inicio del foro > Access y VBA > Access y VBA
  Mensajes nuevos Mensajes nuevos RSS - Fallo servidor remoto automatización IE
  Preguntas frecuentes Preguntas frecuentes  Buscar en el foro   Eventos   Registro Registro  Iniciar sesion Iniciar sesion

Fallo servidor remoto automatización IE

 Responder Responder
Autor
Mensaje
Jose35 Ver desplegable
Habitual
Habitual


Unido: 05/Noviembre/2017
Localización: Aljaraque
Estado: Sin conexión
Puntos: 104
Opciones de entrada Opciones de entrada   Gracias (0) Gracias(0)   Cita Jose35 Cita  ResponderRespuesta Enlace directo a este mensaje Tema: Fallo servidor remoto automatización IE
    Enviado: 22/Julio/2019 a las 14:29
Una Consulta, he probado algunas cosas de vuestro procedimiento con paginas web de internet y hasta lo que he probado funciona, me he quedado en el principio, jeje

donde....

  Set HtmlDoc = IE.Document


Sin embargo si lo intento con la aplicacion Web de mi trabajo a la que accedo a diario y sobre la que trabajo y quiero hacer cositas.... no me funciona vuestro procedimiento

El HtmlDOC se queda vacio e incluso da fallo de Servidor Remoto en los eventos anteriores

Do While IE.ReadyState = 4: DoEvents: Loop   'Do While
Do Until IE.ReadyState = 4: DoEvents: Loop   'Do Until

Como si no detectara que carga la pagina aunque la carga perfectamente.

¿Sabeis a que puede ser debido?
Arriba
lbauluz Ver desplegable
Administrador
Administrador
Avatar

Unido: 29/Marzo/2005
Localización: Binghamton
Estado: Sin conexión
Puntos: 3379
Opciones de entrada Opciones de entrada   Gracias (0) Gracias(0)   Cita lbauluz Cita  ResponderRespuesta Enlace directo a este mensaje Enviado: 22/Julio/2019 a las 19:45
¿Seguro que TODA la página está cargada?

Hay veces que el proxy bloquéa determinadas cosas (vídeos, conexiones a páginas, etc) y el explorador en realidad sigue esperando aunque aparentemente toda la página está cargada).

Normalmente los exploradores tienen un icono que cambia, es una flecha circular para recargar cuando está listo y una X cuando no ha terminado, hazlo a mano y comprueba si sale la X.

Luis
 
Estos son mis principios. Si no le gustan... tengo otros
Arriba
Jose35 Ver desplegable
Habitual
Habitual


Unido: 05/Noviembre/2017
Localización: Aljaraque
Estado: Sin conexión
Puntos: 104
Opciones de entrada Opciones de entrada   Gracias (0) Gracias(0)   Cita Jose35 Cita  ResponderRespuesta Enlace directo a este mensaje Enviado: 22/Julio/2019 a las 22:36
Si, la pagina se carga completamente, debe ser tema de restricciones de la intranet en la que trabajamos, ademas en dichas aplicaciones tu vas clicando y entrando en un lado u otro y ves que en la barra de direcciones de la pagina web, no cambia, para averiguar determinadas direcciones o como entra en un lado u otro, necesitas de los programas como el http analyzer y claro esta desde un pc tuyo, en los del curro imposible instalar nada que no este autorizado.

Editado por Jose35 - 23/Julio/2019 a las 12:00
Arriba
happy Ver desplegable
Moderador
Moderador


Unido: 29/Enero/2005
Localización: España
Estado: Sin conexión
Puntos: 3074
Opciones de entrada Opciones de entrada   Gracias (0) Gracias(0)   Cita happy Cita  ResponderRespuesta Enlace directo a este mensaje Enviado: 23/Julio/2019 a las 19:32
Utiliza las herramientas de desarrollador del Internet Explorer (supongo que estamos hablando de automatización mediante Internet Explorer, no?, que si no entonces todo ese código ya no serviría ...). Una vez cargada la página, le das a F12 y aparecerá la ventana de las herramientas.

Ahí, en las herramientas, ves, para hacer pruebas, al Explorador DOM o DOM Explorer,  selecciona el icono de la flecha y después clica en algún elemento de la página. Verás que te mostrará la parte del código HTML donde está definido el elemento, y verás su nombre, id, eventos, nombre de clase, o lo que sea que le haya atribuido el maquetador de la página a ese elemento.

Para asegurarte de que el IE pueda conectar con el Document de la página cargada, desactiva las líneas de los bucles de espera de carga (Do While IE.ReadyState = 4: DoEvents: Loop ... y todo eso) y ponle la línea

Sleep 10000

que esperará 10 segundos para intentar conectar con ese Document (no se, es por darle mucho tiempo para que se cargue, si quieres más ponle más - 1 segundo = 1.000 para Sleep, eh?)

Deberás declarar la función Sleep si NO lo tienes declarado (es un API de Windows) al principio de un módulo cualquiera. Pega esta línea, si la necesitas:

Public Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds as Long)

Prueba eso y cuentas ...


Editado por happy - 23/Julio/2019 a las 19:33
Saludos,

Juan M. Afan de Ribera
Arriba
Jose35 Ver desplegable
Habitual
Habitual


Unido: 05/Noviembre/2017
Localización: Aljaraque
Estado: Sin conexión
Puntos: 104
Opciones de entrada Opciones de entrada   Gracias (0) Gracias(0)   Cita Jose35 Cita  ResponderRespuesta Enlace directo a este mensaje Enviado: 23/Julio/2019 a las 22:11
Buenas Happy, yo llego ahí a través de ver código fuente, ya sabes, botón derecho del ratón sobre la página web en la que estoy y me sale el explorador DOM. Ahí soy capaz de interpretar códigos sencillitos y suelo sacar muchos datos, pues a veces convierto la página a XML y lo meto en una variable de la que luego voy extrayendo los datos que necesito.

Pero ahora tras leer lo de Mihura y todos vosotros, he visto que se pueden hacer cosas que me vendrían bien, pero como he dicho no me funciona con la aplicación web con la que más trabajo. Lo he probado con una página web normal y reconozco que el código funciona, pero me gustaría saber como hacerlo para mi trabajo.

Hoy haciendo pruebas, una de las veces la página dio un error y decía algo como...te hablo de memoria

Sun Java Microsistem Application HTML error XXXX.

Así que entiendo que el código para trabajar aquí no será el mismo que para una pagina web alojada en un servidor, o si no se, perdonad mi ignorancia en este tema, pues como se dice... toco de oído.

Editado por Jose35 - 23/Julio/2019 a las 22:14
Arriba
Jose35 Ver desplegable
Habitual
Habitual


Unido: 05/Noviembre/2017
Localización: Aljaraque
Estado: Sin conexión
Puntos: 104
Opciones de entrada Opciones de entrada   Gracias (0) Gracias(0)   Cita Jose35 Cita  ResponderRespuesta Enlace directo a este mensaje Enviado: 23/Julio/2019 a las 23:06
Por aportar más datos, os describo como funciona la aplicación, accedo mediante dirección web, me pide identificación usuario//password y accedo.

Una vez en la página principal Clíko en el icono para acceder a la parte donde accedo habitualmente para mi trabajo diario y me abre otra página dividida en varias partes que contiene Menús Superior, desplegables para elegir diferentes plantillas de usuario y muchos campos de filtrado.

Si por ejemplo en el campo correspondiente introduzco un valor, con una determinada plantilla seleccionada y en el menú superior le doy a consultar, me muestra una página con otro menú superior y los datos solicitados. Pues en todo este tiempo, la página web indicada en la barrra de direcciones solo cambia cuando picamos en el icono para acceder a la pagina con la que yo trabajo, ya luego, haga lo que haga está no cambia, siempre ofrece la misma página, sin embargo sé que va cambiando de un servidor a otro, pero no consigo casarla correctamente, me explico.

He conseguido llegar desde access directamente a esta página a la cual trabajando con la aplicación necesito dar varios pasos, pero si lo hago desde access y me muestra la página, no está cargada correctamente.

Editado por Jose35 - 23/Julio/2019 a las 23:08
Arriba
guarracuco Ver desplegable
Moderador
Moderador
Avatar

Unido: 24/Abril/2004
Localización: EEUU
Estado: Sin conexión
Puntos: 3016
Opciones de entrada Opciones de entrada   Gracias (0) Gracias(0)   Cita guarracuco Cita  ResponderRespuesta Enlace directo a este mensaje Enviado: 27/Julio/2019 a las 13:38
Esa web puede estar utilizando frames o Ajax.
El uso de iframes está descartado, en su lugar se utiliza Ajax
Por eso siempre ves la misma dirección url.

https://tucondominioaldia.net
Arriba
happy Ver desplegable
Moderador
Moderador


Unido: 29/Enero/2005
Localización: España
Estado: Sin conexión
Puntos: 3074
Opciones de entrada Opciones de entrada   Gracias (1) Gracias(1)   Cita happy Cita  ResponderRespuesta Enlace directo a este mensaje Enviado: 27/Julio/2019 a las 14:13
Estoy de acuerdo en lo que comenta guarracuco. De hecho yo tengo una aplicación web que automatizo para un cliente y que está hecho con frames e internamente funciona con Java (no Javascript, sino Java, que no es lo mismo).

Para ponerte un ejemplo de esta aplicación, que no tiene por qué parecerse en nada a la de tu trabajo. El usuario se conecta entrando usuario y contraseña. Una vez conectado la página web se convierte en un entorno de trabajo, que internamente consta, creo recordar de 7 frames (explicado muy brevemento y mal un frame es una página web dentro de otra). De esos frames, yo conecto 2 variables HTMLDocument con el Document de 2 frames, uno se llama Header y otro se llama Workspace.

En el frame Header sólo me importan 2 controles, un control o elemento Input, donde el usuario introduce el nombre de la operativa que quiere trabajar, y otro elemento que es una imagen que hace de botón, y que es el que realiza la orden o petición de ejecución de la operativa indicada.

Cuando se carga la operativa, el frame Workspace se actualiza con los controles o elementos correspondientes a la dicha operativa. Estos controles son del tipo input, select, img, span, table/tr/td, etc etc. A partir de aquí, y a través de la variable HTMLDocument conecto con esos elementos y manipulo según me conviene lo que realiza esa página.

Otra cosa muy importante y que es necesaria es controlar algunos eventos del HTMLDocument, al menos el evento DocumentComplete para saber cuándo ha terminado de cargarse o actualizarse una página después de realizar alguna petición (normalmente después de hacer click en algún botón o imagen que sirve como si fuera un botón).

Es lo que dije y he dicho en muchas ocasiones, hay que hacer un estudio profundo de la estructura concreta de cada página o páginas que quieres manipular, así como de sus comportamientos, eventos, scripts, etc. Después aplicar los conocimientos que tengas del DOM (según google "Document Object Model o DOM ('Modelo de Objetos del Documento' o 'Modelo en Objetos para la Representación de Documentos') es esencialmente una interfaz de plataforma que proporciona un conjunto estándar de objetos para representar documentos HTML, XHTML y XML...").

A veces se hace una pregunta del tipo "quiero automatizar una página web, por favor, decidme una instrucción mágica que haga lo que otros tardan su tiempo en estudiar, entender y a la que dedican un montón de líneas de código para hacer funcionar". Eso no es así. Cada página que quieras automatizar la tendrás que entender bien, desgranar y destripar y después aplicar esos conocimientos (aunque sean básicos) que tengas de HTML, DOM, CSS e incluso de Javascript. Sin esos conocimientos podrás hacer un copiar y pegar de un par de cosas que casi por casualidad funcionarán (o no) y para el resto de cosas estarás en blanco.

Esa es mi opinión sobre este tema ... Smile

Edito para agregar un pequeño detalle que ilustra lo que escribo en este mensaje: Para simplemente empezar a trabajar y hacer alguna pequeña cosa con esa aplicación web del cliente que comento aquí, a lo mejor gasté entre pitos y flautas, bien bien unas 60 o 70 horas de investigación y estudio (es cierto también que en el cliente lo tengo todo más que capado porque no tenía permisos ni perfil de acceso, y no tenía herramientas en ese tiempo como el F12 del internet explorer, así que tuve que escribir código y hacer inventos para acceder al código HTML que no aparecía con el botón derecho "mostrar código de la página"). Después empleé otras tantas por lo menos, en crear un módulo de clase para poder manipular un poco más fácilmente ese entorno con las tareas estandard que se me pedían. Finalmente, tuve que rascarme bien la cabeza para lograr cazar y manipular pop ups modales que lanza de vez en cuando esa aplicación para confirmar ciertos movimientos en las operaciones más "delicadas". En fin, que como ves, pues complicarse, y mucho. En mi caso, sólo porque me pagan las horas empleadas, lo hago. Si no, no tendría tiempo material para realizarlo (o dejar de trabajar, dedicarme a la investigación, y ... finalmente morirme de hambre, claro ConfusedConfused)



Editado por happy - 27/Julio/2019 a las 19:46
Saludos,

Juan M. Afan de Ribera
Arriba
Jose35 Ver desplegable
Habitual
Habitual


Unido: 05/Noviembre/2017
Localización: Aljaraque
Estado: Sin conexión
Puntos: 104
Opciones de entrada Opciones de entrada   Gracias (0) Gracias(0)   Cita Jose35 Cita  ResponderRespuesta Enlace directo a este mensaje Enviado: 29/Julio/2019 a las 18:53
Hola Happy, a veces se ve tan facil lo que haceis, que no nos damos cuenta de lo que saber o ser conocedor de todo esto ha conllevado, como bien dices muchas horas, jeje, te pido disculpas por esta parte. Como bien dices los que no sabemos nos creemos que teneis la solucion magica a nuestra habitual pregunta de.... como hacer esto o como salir del paso en esto otro...

Y es verdad que unas veces la solucion vale y otras no, pues aqui como en otros nenesteres pocas veces 2+2=4....de todas formas no os imaginais como se agradecen vuestros apuntes y soluciones, sobre todo para nosotros, los menos estudiaos, aun asi nos aplicamos al menos yo e intento adaptar, comprender, buscar información de lo que me indicais cuando lo necesito y despues de todo esto que no es mas que una forma de pefir disculpas y agradecer vuestro trabajo me quedan un par de preguntas que me gustaria hacerte sobre los frames y los iframes y sobre como se monta una direccion web para acceder a esas paginas ocultas en las que a traves del DOM ves las lineas que indicas, pero lo hare luego cuando tenga un poco mas de tiempo y con la info por delante.
Arriba
lbauluz Ver desplegable
Administrador
Administrador
Avatar

Unido: 29/Marzo/2005
Localización: Binghamton
Estado: Sin conexión
Puntos: 3379
Opciones de entrada Opciones de entrada   Gracias (0) Gracias(0)   Cita lbauluz Cita  ResponderRespuesta Enlace directo a este mensaje Enviado: 29/Julio/2019 a las 19:39
Publicado originalmente por happy happy escribió:


A veces se hace una pregunta del tipo "quiero automatizar una página web, por favor, decidme una instrucción mágica que haga lo que otros tardan su tiempo en estudiar, entender y a la que dedican un montón de líneas de código para hacer funcionar". Eso no es así. Cada página que quieras automatizar la tendrás que entender bien, desgranar y destripar y después aplicar esos conocimientos (aunque sean básicos) que tengas de HTML, DOM, CSS e incluso de Javascript. Sin esos conocimientos podrás hacer un copiar y pegar de un par de cosas que casi por casualidad funcionarán (o no) y para el resto de cosas estarás en blanco.

Esa es mi opinión sobre este tema ... Smile


Eso es en mi opinión lo bueno y lo malo del foro, que puedes aprender mucho o puedes copiar sin pensar. y como programador, hacer las cosas de forma que los demás piensen es más difícil que hacer las cosas y punto.

Pero tengo la mala costumbre de quedarme con lo bueno.

Estos son mis principios. Si no le gustan... tengo otros
Arriba
 Responder Responder
  Compartir tema   

Ir al foro Permisos de foro Ver desplegable