Соскоблите пункты назначения Карт Google - PullRequest
0 голосов
/ 03 июля 2019

Я хотел бы создать код для проверки мест назначения в Картах Google. Я могу получить доступ к пунктам назначения, используя https://www.google.com/maps/dir///.

Затем мне нужно ввести информацию в поля FROM и TO, выбрать TRAVEL MODE и нажать SEARCH. WebBrowser1 встроен в пользовательскую форму DistanceSite. Не могу понять, как нажимать кнопку "Вождение" на Картах Google.

Вот мой текущий код:

Private Sub CommandButton4_Click()

'On Error Resume Next

   With DistanceSite.WebBrowser1

        While .ReadyState <> 4
          DoEvents
        Wend

        With .Document

            .querySelector("div.gstl_50 .sbib_b [class=tactile-searchbox-input]").Value = ThisWorkbook.Sheets("Other Data").Range("BY17").Value

            .querySelector("div.gstl_51 .sbib_b [class=tactile-searchbox-input]").Value = ThisWorkbook.Sheets("Other Data").Range("BY18").Value

            .querySelector("div.widget-directions-travel-mode-switcher-container [class=directions-travel-mode-icon directions-drive-icon]").Click

        End With

        End With

    'If Err <> 0 Then

       'MsgBox "There was an error running the code. Check your Internet connection. Please try one more time!"
       'Else

    'End If

    'On Error GoTo 0

End Sub

1 Ответ

2 голосов
/ 03 июля 2019

Ваш селектор классов неверен для выбора ребенка.Я думаю, не глядя, вы пропустили 1 или более составных классов.В этом случае достаточно использовать один класс (если вы выберете правильный) из составного класса в сочетании с родительским:

.widget-directions-travel-mode-switcher-container .directions-drive-icon

Вы также можете использовать атрибут = значение селектора

ie.document.querySelector("[aria-label=Driving]").click

Идентификаторы могут быть динамическими, поэтому я использовал атрибуты-заполнители в примере ниже.Протестировано в Великобритании.

Option Explicit
Public Sub ClickButton()
    Dim ie As New InternetExplorer
    With ie
        .Visible = True
        .Navigate2 "https://www.google.com/maps/dir//"

        While .Busy Or .readyState < 4: DoEvents: Wend

        With .document
            .querySelector("[placeholder='Choose starting point, or click on the map...']").Value = "Aylesbury"
            .querySelector("[placeholder='Choose destination...']").Value = "Brentford"
            .querySelector("[aria-label=Driving]").Click
        End With

        Stop '<delete me later

        .Quit
    End With
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...