Imprimir página | Cerrar ventana

ViaMichelin

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=84854
Fecha de impresión: 24/Septiembre/2020 a las 01:46


Tema: ViaMichelin
Publicado por: main
Asunto: ViaMichelin
Fecha de publicación: 25/Noviembre/2019 a las 14:14
Acces_2010 vs Windows_7
Buenos dias al grupo:
Estamos tratando de pasar, desde un formulario, algunos parámetros al formulario web de viamichelin con el fin de obtener una determinada ruta.
Y apelo a vuestra generosidad, como siempre, a ver si me echais una mano
Necesito conocer el nombre del boton "+" para añadir una etapa, asi como el nombre y su indice del cuadro de texto donde se van añadiendo las sucesivas etapas.
Y por último el nombre del boton "Buscar" para simular un click y poder concluir el proceso de generación de la ruta.
El problema es que los antiguos nombres que tenia ya no coinciden con los actuales.
De momento solo me funciona la entrada del lugar de partida y la del lugar de destino
Y esto es lo que hay:

Public Sub RutaMichelin()
Dim i As Integer
Dim IE As New InternetExplorer
Dim IEDoc As HTMLDocument
Dim InputmichelinZoneTexte As HTMLInputElement
Dim InputmichelinBouton As HTMLFormElement

IE.Navigate "http://www.viamichelin.es/web/Itinerarios"
Do While IE.ReadyState = 4: DoEvents: Loop   'Do While
Do Until IE.ReadyState = 4: DoEvents: Loop   'Do Until
IE.visible = True
With IE
    For i = 1 To 10
        DoEvents
    Next
    Set IEDoc = IE.Document
    'Señalamos nuestro cuadro de texto de PARTIDA
    Set InputmichelinZoneTexte = IEDoc.all("Departure")
    'Definimos el texto que queremos colocar dentro
    InputmichelinZoneTexte.value = "33006 Oviedo"
    'Señalamos nuestro cuadro de texto de DESTINO
    Set InputmichelinZoneTexte = IEDoc.all("Arrival")
    'Definimos el texto que queremos colocar dentro
    InputmichelinZoneTexte.value = "28002 MADRID"
   
'    De aqui en adelante ya no me reconoce nada
    'Señalamos nuestro botón añadir etapa
    Set InputmichelinBouton = IEDoc.Forms("button.add-step")
   'Y simulamos un click
    InputmichelinBouton.submit
----------------------------------------   
    -------------------------------------

    'Esperamos el fin de la búsqueda
End With
Set IE = Nothing
Set IEDoc = Nothing
End Sub

Saludos



Respuestas:
Publicado por: lbauluz
Fecha de publicación: 26/Noviembre/2019 a las 14:48
Pues el + que yo sepa es el ASCII 43, pero no me queda nada claro para qué lo necesitas.

Luis




-------------
Hay un culto a la ignorancia y siempre lo ha habido y es alimentado por la falsa noción de que democracia significa que "mi ignorancia es tan buena como su conocimiento". (Isaac Asimov)


Publicado por: guarracuco
Fecha de publicación: 26/Noviembre/2019 a las 14:56
Lo más seguro es que ahora tenga un ID o una clase. Click con botón derecho en el elemento y fíjate si tiene Eventos.


Publicado por: guarracuco
Fecha de publicación: 26/Noviembre/2019 a las 20:14
Efectivamente, el buton tiene una clase. 
Prueba este par de líneas, te dejará avanzar.

   Set InputmichelinBouton = IEDoc.querySelector(".searchbox-submit-button")
   
    InputmichelinBouton.Click


Publicado por: main
Fecha de publicación: 26/Noviembre/2019 a las 21:29
Hola Guarracuco
Gracias por tu interes

El boton "+" es el que, al hacer click sobre el, nos va solicitando nuevas etapas(direcciones). Y una vez que hemos rellenado las etapas que deseamos hay que pulsar sobre el boton "Buscar" para que genere la ruta.
Y todo eso es lo que pretendo automatizar
En principio, con la instrucción que me pones, no parece que el boton "+" coja el foco
Saludos Y gracias de nuevo


Publicado por: guarracuco
Fecha de publicación: 26/Noviembre/2019 a las 23:10
Cambia
 Set InputmichelinBouton = IEDoc.querySelector(".searchbox-submit-button")

por

 Set InputmichelinBouton = IEDoc.querySelector(".add-step")


Publicado por: main
Fecha de publicación: 27/Noviembre/2019 a las 13:12
Perfecto, ahora Sí. Hug
Muchas gracias guarracuco
Ya estaba empezando a construir la URL por la fuerza bruta
En definitiva queda asi:
Public Sub RutaMichelin()
Dim i As Integer
Dim IE As New InternetExplorer
Dim IEDoc As HTMLDocument
Dim InputmichelinZoneTexte As HTMLInputElement
Dim InputmichelinBouton As HTMLFormElement
IE.Navigate "http://www.viamichelin.es/web/Itinerarios"
Do While IE.ReadyState = 4: DoEvents: Loop   'Do While
Do Until IE.ReadyState = 4: DoEvents: Loop   'Do Until
IE.visible = True
With IE
    For i = 1 To 10
        DoEvents
    Next
    Set IEDoc = IE.Document
    'Señalamos nuestro cuadro de texto de SALIDA
    Set InputmichelinZoneTexte = IEDoc.all("Departure")
    'Definimos el texto que queremos colocar dentro
    InputmichelinZoneTexte.value = "Oviedo España"
    'Señalamos nuestro cuadro de texto de DESTINO
    Set InputmichelinZoneTexte = IEDoc.all("Arrival")
    'Definimos el texto que queremos colocar dentro
    InputmichelinZoneTexte.value = "MADRID España"
    'Señalamos nuestro boton de añadir Etapa y hacemos un click
    Set InputmichelinBouton = IEDoc.querySelector(".add-step")
    InputmichelinBouton.Click
    'Señalamos nuestra primera etapa y colocamo su valor
    Set InputmichelinZoneTexte = IEDoc.all("step-1")
    InputmichelinZoneTexte.value = "Santander España"
    'Señalamos nuestro boton de añadir Etapa y hacemos un click
    Set InputmichelinBouton = IEDoc.querySelector(".add-step")
    InputmichelinBouton.Click
    'Señalamos nuestra segunda etapa y colocamo su valor
    Set InputmichelinZoneTexte = IEDoc.all("step-2")
    InputmichelinZoneTexte.value = "Valladolid España"
    'Señalamos el boton busacr y hacemos un click
    Set InputmichelinBouton = IEDoc.querySelector(".searchbox-submit-button")
    InputmichelinBouton.Click
    'Esperamos el fin de la búsqueda
End With
Set IE = Nothing
Set IEDoc = Nothing
End Sub
'Para quien quiera construir una Url directamente por la fuerza bruta
'https://www.viamichelin.es/web/Itinerarios?departure=33006 Oviedo&step-1=24001 León España&step-2=Valladolid España&step-3=Porto Portugal&arrival=28002 MADRID

Gracias de nuevo Guarracuco
Saludos a todos
Se puede cerrar el tema


Publicado por: guarracuco
Fecha de publicación: 27/Noviembre/2019 a las 13:29
QuerySelector te permite seleccionar un elemento con una clase, en caso de más de uno tenga esa clase. Muy importante es que es IExplorer lo acepta.


Publicado por: main
Fecha de publicación: 27/Noviembre/2019 a las 14:35
Gracias por la informacion
Bueno, que una vez conseguido veo que aparecen bajo el mapa datos ciertamente utiles tales como el tiempo estimado de la ruta, Kilómetros de la ruta y el coste estimado.
A ver si alguien se decide a exponer como se obtienen (extraen) esos datos

Saludos a todos



Publicado por: main
Fecha de publicación: 18/Diciembre/2019 a las 18:50
Se puede cerrar este hilo




Imprimir página | Cerrar ventana