我想编写一个用于抓取Google Maps目的地的代码。我可以使用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
答案 0 :(得分:2)
您的班级选择器不能选择孩子。我想,不看,您就错过了一个或多个复合类。在这种情况下,只需将复合类中的单个类(如果您选择了正确的类)与父类结合使用:
.widget-directions-travel-mode-switcher-container .directions-drive-icon
您还可以使用属性=值选择器
ie.document.querySelector("[aria-label=Driving]").click
id可能是动态的,这就是为什么我在下面的示例中使用占位符属性的原因。经过英国设置的测试。
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