Imprimir página | Cerrar ventana

Interactuar con una pagina web

Impreso de: Foro de Access y VBA
Categoría: Access y VBA
Nombre del foro: Access y VBA
Descripción del foro: Foro de programacion en Access (Con código y sin código)
URL: http://www.mvp-access.com/foro/forum_posts.asp?TID=84603
Fecha de impresión: 24/Febrero/2020 a las 09:39


Tema: Interactuar con una pagina web
Publicado por: Mihura
Asunto: Interactuar con una pagina web
Fecha de publicación: 16/Julio/2019 a las 23:52
Hola,

Tengo que interactuar con una página web para obtener unos cambios de divisas y me he quedado atascado. Es un tema que nunca he tratado y del cuál soy incapaz de encontrar un manual (aunque sea en extranjero), sirva esto para que si alguien conoce alguno que haga el favor de ponerlo.

La cuestión está en que soy capaz de lo siguiente:
- abro por automatización un objeto InternetExplorer
- cargo la página que busco
- pongo en el campo correspondiente de tipo de 'moneda de' el valor que quiero
- pongo en el campo correspondiente de tipo de 'moneda a' el valor que quiero
...
pero ahí me quedo, 
- está página no tiene un botón que al hacer clic realice la conversión,
- si le lanzo un submit al formulario me da error porque no es lo que espera
- soy incapaz de lanzar el evento "onmouseup" o "onmousedown" (los ejecuta pero no hace nada)
    * tampoco la inspección me da que estos campos tengan eventos (o yo no los se ver)

Vamos, que espero indicaciones de cuál puede ser el camino a seguir.

EL código que uso (de pruebas, después habrá que complicarlo) es el siguiente:

Dim WithEvents IE As InternetExplorer
Dim WithEvents inputEle As HTMLInputElement
Dim HTMLdoc As HTMLDocument

Private Sub Comando0_Click()

    Set IE = CreateObject("InternetExplorer.Application")
    IE.Visible = True

    IE.Navigate "https://www1.oanda.com/lang/es/currency/converter/"

    Stop
    
    Set HTMLdoc = IE.Document
    Set inputEle = HTMLdoc.getElementById("quote_currency_input")
    inputEle.Value = "GBP"
    'inputEle.FireEvent "onmouseup"
    'inputEle.FireEvent "onmousedown"
    Set inputEle = HTMLdoc.getElementById("base_currency_input")
    inputEle.Value = "CAD"

    'IE.Document.Forms(0).submit
    Set IE = Nothing
End Sub

Gracias mil.



-------------
Jesús Mansilla Castells.
Saludos desde Móstoles.

http://www.accessaplicaciones.com" rel="nofollow - Access Aplicaciones
http://www.tecsys.es" rel="nofollow - Tecsys.es



Respuestas:
Publicado por: lbauluz
Fecha de publicación: 17/Julio/2019 a las 03:00
Pues simple, ponle el importe que quieres

Private Sub xx()

    Set IE = CreateObject("InternetExplorer.Application")
    IE.Visible = True

    IE.Navigate "https://www1.oanda.com/lang/es/currency/converter/"

    Set HTMLdoc = IE.Document
    Set inputEle = HTMLdoc.getElementById("quote_currency_input")
    inputEle.Value = "GBP"

    Set inputEle = HTMLdoc.getElementById("base_currency_input")
    inputEle.Value = "CAD"
' AQUÍ
    Set inputEle = HTMLdoc.getElementById("quote_amount_input")
    inputEle.Value = "12" ' o el valor que te apetezca, claro, de paso, en base_amount_input tienes el valor del cambio
    Set IE = Nothing
End Sub



-------------
El Búho es mi ídolo caido


Publicado por: Mihura
Fecha de publicación: 17/Julio/2019 a las 09:12
Hola Luis,

me has dado una alegría -una-, la primera vez ha funcionado, después ya vuelve al mismo ritual, cambie lo que cambie no hace nada, no cambia el tipo de divisa en el 'combo', ni efectúa el cambio.

¿más ideas?


-------------
Jesús Mansilla Castells.
Saludos desde Móstoles.

http://www.accessaplicaciones.com" rel="nofollow - Access Aplicaciones
http://www.tecsys.es" rel="nofollow - Tecsys.es


Publicado por: mounir
Fecha de publicación: 17/Julio/2019 a las 10:04
Hola Jesús!

Creo que MexMan70 tenía un ejemplo

http://sdrv.ms/Vk6eJd" rel="nofollow - Cotización Dolar

-------------
Un Saludo.


Publicado por: Mihura
Fecha de publicación: 17/Julio/2019 a las 11:08
Hola Mounir,

Lo primero es que la página que usa ya no existe .... Ouch

Lo segundo es que lo que hace el ejemplo es coger el código HTML de la página y buscar en la misma el valor que quiere, no interectúa con ella, y yo lo que pretendo es sacar el cambio de varias divisas, con lo que tengo que ingresar valores, que se 'entere' que se los he ingresado y que haga el cálculo.

Además, la página es la que quiere el cliente, así que no puedo ir buscando una que se me acomode a mí.

Y ... añado .... trato de aprender a manejar esta historia que nunca lo había hecho, así que no puedo rendirme ... Wink

Gracias.


-------------
Jesús Mansilla Castells.
Saludos desde Móstoles.

http://www.accessaplicaciones.com" rel="nofollow - Access Aplicaciones
http://www.tecsys.es" rel="nofollow - Tecsys.es


Publicado por: guarracuco
Fecha de publicación: 17/Julio/2019 a las 13:55
Esta solucion es gracias al usuario cpampas. Hace como un mes presento algo similar y aprendi a adjuntar eventos a un objeto html.

Dim WithEvents IE As SHDocVw.InternetExplorer
Dim doc As HTMLDocument

Private Sub Command0_Click()
  Set IE = CreateObject("InternetExplorer.Application")
    IE.Visible = True

    IE.navigate "https://www1.oanda.com/lang/es/currency/converter/"

    Stop 'aqui coloca un while--busy--

    Set HTMLdoc = IE.Document
    Set inputEle = HTMLdoc.getElementById("quote_currency_input")
    inputEle.Value = "GBP"
    Set inputEle = HTMLdoc.getElementById("base_currency_input")
    inputEle.Value = "CAD"
               
    Dim evt As Object
    Set evt = IE.Document.createEvent("HTMLEvents")
    evt.initEvent "keydown", True, False
    IE.Document.getElementById("quote_amount_input").attachEvent ("keydown")
   
    evt.initEvent "blur", True, False
    IE.Document.getElementById("quote_amount_input").attachEvent ("blur")
   
    evt.initEvent "keyup", True, False
    IE.Document.getElementById("quote_amount_input").attachEvent ("keyup")
   
    IE.Document.getElementById("quote_amount_input").Value = "253.55"
    IE.Document.getElementById("quote_amount_input").dispatchEvent evt, 13

End Sub


-------------
https://tucondominioaldia.net


Publicado por: Mihura
Fecha de publicación: 17/Julio/2019 a las 16:07
Agghhhhhrrrrrr ... después de tener todo escrito, voy y lo pierdo ...  Ouch

Gracias Carlos,

veamos, que dijo un ciego:

Con esto lanzamos el evento "keyup" del  importe base a cambiar (por cierto, si sólo creamos el evento keyup también funciona, ¿por qué creas los otros dos?)

La cuestión es que sí, hemos cambiado los valores de las monedas a usar "GBP" y "CAD" pero la acción que ocurre al cambiar la moneda no la realiza, con lo que no cambia el valor de cambio ... con lo que el cálculo es erróneo.

He probado a lanzar distintos eventos en el campo quote_currency_input el "keyup", el "blur" que por lo que he averiguado en parecido a un LostFocus y ... nada

¿que evento se supone habría que lanzar?



P.D. ¿Sabes de manuales de este tema? ... gracias mil compañero.




-------------
Jesús Mansilla Castells.
Saludos desde Móstoles.

http://www.accessaplicaciones.com" rel="nofollow - Access Aplicaciones
http://www.tecsys.es" rel="nofollow - Tecsys.es


Publicado por: Emilio
Fecha de publicación: 17/Julio/2019 a las 16:54
Hola!
¿Y no has probado con un webservice? Emiliove tenía algo al respecto.


-------------
Saludos a todos desde Huelva

http://www.mvp-access.es/emilio/" rel="nofollow - http://www.mvp-access.es/emilio/


Publicado por: Mihura
Fecha de publicación: 17/Julio/2019 a las 17:03
Hola chiquitín,

El webservice de esta página es de pago .... Wink.

También tengo otra página -ya dominada- que me da la información que quiero, pero lo de esta es por contentar al cliente y aprender, que por lo que veo esto tiene algunas 'vainas' pelín complicadas.

Un saludo.


-------------
Jesús Mansilla Castells.
Saludos desde Móstoles.

http://www.accessaplicaciones.com" rel="nofollow - Access Aplicaciones
http://www.tecsys.es" rel="nofollow - Tecsys.es


Publicado por: guarracuco
Fecha de publicación: 17/Julio/2019 a las 20:33
Curioso que si no creo los 3 eventos, no me funciona.
En mi portátil me funciona. Ahora estoy en el trabajo. Lo reviso al llegar a casa y comento.
Si, la API  es de pago. Eso fue lo primero que revise.
Un placer muu


-------------
https://tucondominioaldia.net


Publicado por: guarracuco
Fecha de publicación: 17/Julio/2019 a las 20:35
A ver si entendi: si cambia la selección de La Moneda pero no su valor?


-------------
https://tucondominioaldia.net


Publicado por: Mihura
Fecha de publicación: 17/Julio/2019 a las 20:38
Pone el literal, pero no lo 'selecciona' como hace cuando lo haces 'a mano', lo verás en la propia web. 
Al hacer a mano tú el cambio, verás que hace otras cosas.

Yo le pongo un stop para ir ejecutando las instrucciones una a una e ir bicheando.




-------------
Jesús Mansilla Castells.
Saludos desde Móstoles.

http://www.accessaplicaciones.com" rel="nofollow - Access Aplicaciones
http://www.tecsys.es" rel="nofollow - Tecsys.es


Publicado por: lbauluz
Fecha de publicación: 18/Julio/2019 a las 03:59
El problema es que estamos escribiendo en los combos, pero no SELECCIONANDO el combo, de forma que pongas lo que pongas, sigue con la moneda inicial, aún no he conseguido hacer click en un elemento del combo, pero con eso debería funcionar.

-------------
El Búho es mi ídolo caido


Publicado por: guarracuco
Fecha de publicación: 18/Julio/2019 a las 12:54
Mas complejo aun, no hay combos. Se despliega una lista con opciones. He jugado un poco y al menos recorro la clase ltr_list_item, que es la que dispara el evento click.
Logro recorrer los hijos (etiquetas span) de cada ltr_list_item y comparo el innerHTML valor con el codigo de la moneda original.
Al encontrar el valor, asigno al elemento quote_currency_flag, la clase de la moneda deseada y al elemento quote_currency_code (la flechita a la derecha), le asigno el codigo de la moneda, pero naaa.

Continuare jugando esta noche.
Si sirve de algo, aqui dejo lo que tengo hasta el momento.

Private Sub Command1_Click()
Dim IE As SHDocVw.InternetExplorer
Dim doc As HTMLDocument
'Dim div As Object
    Set IE = CreateObject("InternetExplorer.Application")
    IE.Visible = True
    IE.navigate "https://www1.oanda.com/lang/es/currency/converter/"

    'Stop 'aqui coloca un while--busy--
    While IE.Busy Or IE.ReadyState < 4: DoEvents: Wend

    Set HTMLdoc = IE.Document
    Set lstcontainer = HTMLdoc.getElementById("quote_currency_list_container")
   
    Set sel = HTMLdoc.getElementsByClassName("ltr_list_item")

    Dim evt As Object
    Set evt = IE.Document.createEvent("HTMLEvents")
    evt.initEvent "click", True, False
   
    For i = 0 To sel.length - 1 '432
        Set divs = sel.Item(i)
        Set child = divs.getElementsByTagName("span")

         For k = 0 To child.length - 1
            If child(k).innerHTML = "GBP" Then
                Set inputele = HTMLdoc.getElementById("quote_currency_input")
                inputele.setAttribute "autocomplete", "true"
                Set flag = HTMLdoc.getElementById("quote_currency_flag")
                flag.className = "GBP"
                inputele.Value = "British Pound"
                HTMLdoc.getElementById("quote_currency_code").innerHTML = "GBP"
               
                flag.className = "GBP"
                inputele.Value = "British Pound"
                HTMLdoc.getElementById("quote_currency_code").innerHTML = "GBP"
               
                flag.className = "USD"
                inputele.Value = "US Dollar"
                HTMLdoc.getElementById("quote_currency_code").innerHTML = "USD"
               
               ' sel(i).attachEvent ("change")
                sel(i).dispatchEvent evt
               
                'Debug.Print child(k).innerHTML
               
                Debug.Print IE.Document.getElementById("base_amount_input").Value
                flag = True
                Exit For
            End If
         Next
         If flag Then Exit For
    Next
    'Debug.Print sel.length
    IE.Quit
    End Sub



-------------
https://tucondominioaldia.net


Publicado por: Maverick2019
Fecha de publicación: 18/Julio/2019 a las 13:31
Hola a todos.
He mirado un poco por ahí Wink y he encontrado esto:  https://www.seleniumhq.org/projects/" rel="nofollow - https://www.seleniumhq.org/projects/
¿Puede ser de interés para éste tema?

Salu2,


Publicado por: Maverick2019
Fecha de publicación: 18/Julio/2019 a las 13:50
Hola de nuevo.
Y el sitio donde encontre el link anterior, era este:  https://www.automateexcel.com/vba/automate-internet-explorer-ie-using/" rel="nofollow - https://www.automateexcel.com/vba/automate-internet-explorer-ie-using/

Salu2,


Publicado por: Mihura
Fecha de publicación: 18/Julio/2019 a las 15:34
Carlos, muchas zenkius por tu interés ...  Wink

Menudo cacao de página ... Ouch, a mi me sobrepasa 3 pueblos Dead,  pero bueno es cuestión de aprender, que cada vez habrá que hacer más uso de estos temas, aunque espero que no sean tan complicadas como esta, la verdad es que he hecho pruebas con otras páginas y ni de lejos le llegan a la que andamos mirando, supongo que lo hacen así de complicado para que la gente contrate el webservice de pago.

Cuando la ponga en limpio, ya pondré otra página que da cambio de moneda, pero muuuuucho más facilita LOL.


Hola José María,

Lo del Selenium me lo apunto para echarle un vistazo (si es que saco tiempo, que es lo complicado), aunque de lo que se trata es de manejar Iexplore desde Access directamente, no manejarlo desde otro programa intermedio. A ver si bicheándolo un poquico veo ideas que aplicar.

El enlace excel que pones (gracias) es uno de los que he visto estos días en mi pelea con este tema.



Un saludo a los dos.


-------------
Jesús Mansilla Castells.
Saludos desde Móstoles.

http://www.accessaplicaciones.com" rel="nofollow - Access Aplicaciones
http://www.tecsys.es" rel="nofollow - Tecsys.es


Publicado por: guarracuco
Fecha de publicación: 18/Julio/2019 a las 20:33
Un gustaso muu.
Esta dificil. Por supuesto pa que pagues el servicio.
Tengo mas codigo nuevo. Con una llamada al shell, limpio las cookies y corregi la línea para asignar clases.
Estoy también mostrando la lista desplegable. Creo que si logro simular el click en el elemento con la clase que le coloca cuando se mueve el mouse PO encima, funcione.



-------------
https://tucondominioaldia.net


Publicado por: Maverick2019
Fecha de publicación: 19/Julio/2019 a las 09:51
Buenas
Encontré hace algún tiempo esto:  https://dymeng.com/resources/browse-embed/" rel="nofollow - https://dymeng.com/resources/browse-embed/
Mirad a ver sí os puede servir.

Buen finde...


Publicado por: Mihura
Fecha de publicación: 19/Julio/2019 a las 12:31
Más deberes .... ¡gracias!

Lo mismo te deseo.


-------------
Jesús Mansilla Castells.
Saludos desde Móstoles.

http://www.accessaplicaciones.com" rel="nofollow - Access Aplicaciones
http://www.tecsys.es" rel="nofollow - Tecsys.es


Publicado por: happy
Fecha de publicación: 19/Julio/2019 a las 16:18
He estado siguiendo este hilo y haciendo pruebas con las cosas que ibais poniendo. Al final la verdad es que he conseguido que funcione, pero no se si me quedo muy satisfecho, pues está basado en alguna chapucilla, pero bue, de momento avanza un poco el tema.

Lo que he visto es que la primera vez que asignaba las dos divisas y luego la cantidad a convertir, sí que funcionaba, pero la segunda vez, no actualizaba la cantidad resultante. Así que he hecho una chapucilla para que obligue a cambiar las divisas desde la última vez que se consultaron, y así, parece que me ha funcionado una segunda, tercera, etc veces. Aquí está el código:

Dim IE As InternetExplorer
Dim HtmlDoc As HTMLDocument
Dim inputEle As HTMLInputElement
Dim innerBox 'As HTMLDivElement
Dim col 'As HTMLElementCollection
Dim div 'As HTMLDivElement
Dim span 'As HTMLSpanElement

    Set IE = CreateObject("InternetExplorer.Application")
    IE.Visible = True

    IE.navigate "https://www1.oanda.com/lang/es/currency/converter/"

    Sleep 2000
'    Stop 'aqui coloca un while--busy--

    Set HtmlDoc = IE.Document
   
    ' primero ponemos la cantidad que deseamos cambiar
    Set inputEle = IE.Document.getElementById("quote_amount_input")
'    inputEle.ClassName = "have focus"
    inputEle.value = "450"
   
    ' referenciamos el desplegable con la divisa 1
    Set innerBox = HtmlDoc.getElementById("scroll-innerBox-1")
    ' referenciamos controles div de clase "ltr_list_item", que son los elementos del desplegable
    Set col = innerBox.getElementsByClassName("ltr_list_item")
    For Each div In col
        ' referenciamos el elemento span nº 3 de cada div "ltr_list_item" (que es la class "code-right")
        Set span = div.getElementsByTagName("span")(2)
        ' ponemos un valor diferente al que queremos (obligamos a actualizar el campo y otros valores)
        If span.innerText <> "EUR" Then
            div.FireEvent ("onmouseover")
            div.FireEvent ("onclick")
            Exit For
        End If
    Next
   
    Set col = innerBox.getElementsByClassName("ltr_list_item")
    For Each div In col
        ' referenciamos el elemento span nº 3 de cada div "ltr_list_item" (que es la class "code-right")
        Set span = div.getElementsByTagName("span")(2)
        ' en la segunda pasada ponemos el valor que queremos
        If span.innerText = "EUR" Then
            div.FireEvent ("onmouseover")
            div.FireEvent ("onclick")
            Exit For
        End If
    Next
   
    ' referenciamos el desplegable con la divisa 2 y hacemos lo mismo que con la divisa 1
    Set innerBox = HtmlDoc.getElementById("scroll-innerBox-2")
    Set col = innerBox.getElementsByClassName("ltr_list_item")
    For Each div In col
        Set span = div.getElementsByTagName("span")(2)
        If span.innerText <> "GBP" Then
            div.FireEvent ("onmouseover")
            div.FireEvent ("onclick")
            Exit For
        End If
    Next
   
    Set col = innerBox.getElementsByClassName("ltr_list_item")
    For Each div In col
        Set span = div.getElementsByTagName("span")(2)
        If span.innerText = "GBP" Then
            div.FireEvent ("onmouseover")
            div.FireEvent ("onclick")
            Exit For
        End If
    Next

a ver si a vosotros también os funciona ...


-------------
Saludos,

Juan M. Afan de Ribera


Publicado por: Mihura
Fecha de publicación: 19/Julio/2019 a las 18:20
Si señor ... Clap

He metido el cálculo en un bucle para simular condiciones reales y ... necesita un sleep para darle tiempo a leer, porque si no coge el primer valor y se lo zampa a todos, lo que he probado queda asi:

    Dim IE As InternetExplorer
    Dim HtmlDoc As HTMLDocument
    Dim inputEle As HTMLInputElement
    Dim innerBox 'As HTMLDivElement
    Dim col 'As HTMLElementCollection
    Dim div 'As HTMLDivElement
    Dim span 'As HTMLSpanElement
    Dim xArray As Variant, i As Integer, xS As String, Divisa1 As String, Divisa2 As String
    xArray = Array("EUR-GBP", "EUR-EUR", "USD-CAD", "GBP-GBP", "AUD-EUR", "USD-USD", "CAD-EUR", "AUD-AUD", "USD-EUR")

    Set IE = CreateObject("InternetExplorer.Application")
    IE.Visible = True

    IE.Navigate "https://www1.oanda.com/lang/es/currency/converter/"

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

    Set HtmlDoc = IE.Document
    
    ' primero ponemos la cantidad que deseamos cambiar
    Set inputEle = IE.Document.getElementById("quote_amount_input")
    '    inputEle.ClassName = "have focus"
    inputEle.Value = "1"
    
    For i = 0 To UBound(xArray)
        Divisa1 = Left$(xArray(i), 3)
        Divisa2 = Right$(xArray(i), 3)
    
        ' referenciamos el desplegable con la divisa 1
        Set innerBox = HtmlDoc.getElementById("scroll-innerBox-1")
        ' referenciamos controles div de clase "ltr_list_item", que son los elementos del desplegable
        Set col = innerBox.getElementsByClassName("ltr_list_item")
        For Each div In col
            ' referenciamos el elemento span nº 3 de cada div "ltr_list_item" (que es la class "code-right")
            Set span = div.getElementsByTagName("span")(2)
            ' ponemos un valor diferente al que queremos (obligamos a actualizar el campo y otros valores)
            'If span.innerText <> "CAD" Then
            If span.innerText <> Divisa1 Then
                div.FireEvent ("onmouseover")
                div.FireEvent ("onclick")
                Exit For
            End If
        Next
    
        Set col = innerBox.getElementsByClassName("ltr_list_item")
        For Each div In col
            ' referenciamos el elemento span nº 3 de cada div "ltr_list_item" (que es la class "code-right")
            Set span = div.getElementsByTagName("span")(2)
            ' en la segunda pasada ponemos el valor que queremos
            'If span.innerText = "CAD" Then
            If span.innerText = Divisa1 Then
                div.FireEvent ("onmouseover")
                div.FireEvent ("onclick")
                Exit For
            End If
        Next
    
        ' referenciamos el desplegable con la divisa 2 y hacemos lo mismo que con la divisa 1
        Set innerBox = HtmlDoc.getElementById("scroll-innerBox-2")
        Set col = innerBox.getElementsByClassName("ltr_list_item")
        For Each div In col
            Set span = div.getElementsByTagName("span")(2)
            'If span.innerText <> "GBP" Then
            If span.innerText <> Divisa2 Then
                div.FireEvent ("onmouseover")
                div.FireEvent ("onclick")
                Exit For
            End If
        Next
    
        Set col = innerBox.getElementsByClassName("ltr_list_item")
        For Each div In col
            Set span = div.getElementsByTagName("span")(2)
            'If span.innerText = "GBP" Then
            If span.innerText = Divisa2 Then
                div.FireEvent ("onmouseover")
                div.FireEvent ("onclick")
                Exit For
            End If
        Next
    
        Sleep 2000
    
        Debug.Print xArray(i) & ": " & IE.Document.getElementById("base_amount_input").Value
    Next i
    
    IE.Quit
    
    Set IE = Nothing


Y el resultado de la ejecución:
EUR-GBP: 0,90038
EUR-EUR: 1,00000
USD-CAD: 1,30553
GBP-GBP: 1,00000
AUD-EUR: 0,62640
USD-USD: 1,00000
CAD-EUR: 0,68141
AUD-AUD: 1,00000
USD-EUR: 0,88971


-------------
Jesús Mansilla Castells.
Saludos desde Móstoles.

http://www.accessaplicaciones.com" rel="nofollow - Access Aplicaciones
http://www.tecsys.es" rel="nofollow - Tecsys.es


Publicado por: happy
Fecha de publicación: 19/Julio/2019 a las 20:18
Vaya, pues me alegro Smile. Después de hacer diversas pruebas y funcionar y después no funcionar, etc, ya no estaba seguro de si me funcionaba o no funcionaba por el caché del navegador. Lo iba eliminando y al final me ha funcionado, pero ya digo, no estaba muy seguro.

Lo del bucle de espera para la carga de la página, aunque he visto en muchas ocasiones ese bucle que pregunta por el readystate no lo tengo muy claro que realmente sea lo más eficaz, pues me he encontrado también muchas veces que el bucle me decía que ya había cargado la página (o que el readystate ya NO era igual a 4) y resulta que todavía debía terminar de cargar cosas. Al final no era lo mejor, vaya. Yo lo que hago es capturar el evento DocumentComplete del IE. Eso es mucho más seguro. El Sleep que había puesto era para no complicarme, por que estabamos en pruebas.

Bueno, pues ya ves, lo que digo yo con esto de las páginas web. Una cosa es controlar el IE o Firefox o cualquier otro navegador, y otra cosa muy distinta poder automatizar una página web. Como hemos visto en este ejemplo, las cosas no son lo que parecen y por poner un valor en un campo, no quiere decir que se vayan a ejecutar las funciones o eventos relacionados con ese campo o control.

Thumbs Up


-------------
Saludos,

Juan M. Afan de Ribera


Publicado por: Jose35
Fecha de publicación: 21/Julio/2019 a las 23:08
Hola estoy intentando aprender de todo esto y cada dia leo o veo algo que me interesa saber como se hace, acabo de leer lo ultimo que ha escrito happy y me gustaría que alguno de vosotros o él mismo si es posible, me explique como se realiza lo de capturar el evento DocumentComplete del IE, me vendría muy bien, me ocurre que en mi trabajo debido a todo el tema de permisos y claves, lanzo una pagina web para obtener un dato y por mucho sleep que le añada alguna que otra vez la rutina corre antes de cargar la pagina.

Gracias y Un saludo.


Publicado por: Mihura
Fecha de publicación: 21/Julio/2019 a las 23:17
Clase WebBrowser:

Event DocumentComplete(pDisp As Object, URL)
    Miembro de SHDocVw.WebBrowser
    Fired when the document being navigated to reaches ReadyState_Complete.


Obtenido con el examinador de objetos.




-------------
Jesús Mansilla Castells.
Saludos desde Móstoles.

http://www.accessaplicaciones.com" rel="nofollow - Access Aplicaciones
http://www.tecsys.es" rel="nofollow - Tecsys.es


Publicado por: guarracuco
Fecha de publicación: 22/Julio/2019 a las 13:09
Si declaras al inicio del modulo al objeto IE withevents, obtienes todos los eventos.


-------------
https://tucondominioaldia.net


Publicado por: main
Fecha de publicación: 22/Julio/2019 a las 14:20
Que buen hilo
Clap Clap
Enhorabuena a todos los intervinientes

Y como lo hariamos para otro esplorador como Chrome o mozilla

Saludos





Imprimir página | Cerrar ventana