【问题标题】:Selecting Dropdown list in IE with VBA使用 VBA 在 IE 中选择下拉列表
【发布时间】:2015-11-20 05:08:54
【问题描述】:

我一直在尝试使用 VBA 在网页中选择一个下拉列表,这是我的新手。在 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 代码来选择其中一个选项。以下是我使用的最新代码,但运行后下拉菜单似乎没有任何反应:

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

【问题讨论】:

    标签: html excel drop-down-menu vba


    【解决方案1】:

    下拉列表不是下拉列表(正如您所提到的)。相反,它是一个无序列表,其中包含许多链接作为可点击选项。话虽如此,For Rent 选项不包含在str_listing-btn 中。请注意在任何选项可用之前该标签是如何关闭的。相反,它包含在它下面的列表中。

    由于没有创建帐户就无法进入您的链接,因此我测试了代码以选择主页上的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
    

    【讨论】:

    • 您好 user3561813,您的解决方案有效!谢谢!天哪,如果它是 HTML 中的
    【解决方案2】:

    CSS 选择器:

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

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

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


    CSS 查询:


    VBA:

    您使用文档的 querySelector 方法应用 CSS 选择器

    objIE1.Document.querySelector("a[data-value=For Sale]").Click
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-03-28
      • 1970-01-01
      相关资源
      最近更新 更多