使用 VBA 在 IE 中选择下拉列表

Selecting Dropdown list in IE with VBA

我一直在尝试使用 VBA 在网页中 select 下拉列表,这是我的新手。在 HTML 中,下拉菜单表示为 Button 而不是 Select。这是 HTML 代码:

<span class='btn-group'>
  <button id='str_listing-btn' name='str_listing-btn' type='button' class='btn btn-default dropdown-toggle' data-toggle='dropdown' data-value='For Sale'>
    For Sale
    <span class='caret' style='margin-left:5px;'>
    </span>
  </button>
  <ul class='dropdown-menu wptk_crud_dropdown' id='str_listing' data-value='str_listing' role='menu'>
    <li>
      <a href='#' data-value='For Sale'>For Sale</a>
    </li>
    <li>
      <a href='#' data-value='For Rent'>For Rent</a>
    </li>
    <li>
      <a href='#' data-value='Wanted To Buy'>Wanted To Buy</a>
    </li>
    <li>
      <a href='#' data-value='Wanted To Rent'>Wanted To Rent</a>
    </li>
  </ul>
</span>

我已经尝试了几个 VBA 代码来 select 其中一个选项。以下是我使用的最新代码,但在 运行 之后,下拉菜单似乎没有任何变化:

Private Sub InsertPropwall_Click()

Dim objIE1 As Object
objIE1.navigate ("http://www.propwall.my/classifieds/post_ad?action=add")

Do
DoEvents
Loop Until objIE1.ReadyState = 4

objIE1.Document.getElementById("str_listing-btn").Value = "For Rent"

Do
DoEvents
Loop Until objIE1.ReadyState = 4

End Sub

下拉菜单不是下拉菜单(如您所述)。相反,它是一个无序列表,其中包含许多 link 作为可点击选项。也就是说,For Rent 选项不包含在 str_listing-btn 中。请注意在任何选项可用之前该标记是如何关闭的。相反,它包含在它下面的列表中。

由于我无法在不创建帐户的情况下进入您的 link,因此我测试了 select 主页上 For Rent 选项的代码。查看我的代码,测试它是否满足您的需求,然后尝试将其融入您的代码中。如果您需要其他帮助,请告诉我们。

Sub NavigateIt()
    Dim oIE As Object

    Set oIE = CreateObject("InternetExplorer.Application")
    oIE.navigate ("http://www.propwall.my/classifieds")
    oIE.Visible = True

    Do
        DoEvents
    Loop Until oIE.ReadyState = 4

    Set AvailableLinks = oIE.document.getelementbyid("list-listing").getelementsbytagname("a")

    For Each cLink In AvailableLinks
        If cLink.innerhtml = "For Rent" Then
            cLink.Click
        End If
    Next cLink

End Sub

CSS 选择器:

您可以使用 CSS 选择器,例如

a[data-value=For Sale] or a[data-value=For Rent]

这表示带有 a 标签的第一个元素具有属性 data-value,其值为 'For Sale';或者,在后续示例中 'For Rent'


CSS查询:


VBA:

您使用 document

的 querySelector 方法应用 CSS 选择器
objIE1.Document.querySelector("a[data-value=For Sale]").Click