【问题标题】:VBA Clicking Button on IEIE上的VBA单击按钮
【发布时间】:2018-02-16 21:42:08
【问题描述】:

我经常使用 VBA,但在 IE 自动化方面我还是个初学者。 我需要为我的公司创建一个代码来单击特定网站上的“按钮”。 这个按钮会打开一个小菜单,我需要在其中选择一些东西(我想我稍后会处理)。问题是,该按钮没有显示任何 ID 或名称,它是一个跨度,我无法让它单击它。 下面是我按下 F12 并检查按钮上方的元素时的 HTML:

 <span class="search_for_watchers">
 <a href="/watchers/new?project_id=pendencia" data-method="get" data-remote="true">Procurar por outros observadores para adiconar</a>
 </span>

我尝试了很多在互联网上找到的建议。我尝试通过 ID、名称、类名等获取元素,但没有成功。 以下是我正在使用的代码:

Sub Automate_IE_Load_Page()
    Dim i As Long
    Dim URL As String
    Dim ie As Object
    Dim objElement As Object
    Dim objCollection As Object

    Set ie = CreateObject("InternetExplorer.Application")

    ie.Visible = True

    URL = "Examplesite.com"

    ie.Navigate URL

    Application.StatusBar = URL & " is loading. Please wait..."

    Do While ie.READYSTATE = 4: DoEvents: Loop
    Do Until ie.READYSTATE = 4: DoEvents: Loop

    Application.StatusBar = URL & " Loaded"

    botao = ie.Document.getElementsByClassName("search_for_watchers")
    botao.Click
End Sub

它没有显示任何错误..它只是没有打开我想要的子菜单,因此没有点击按钮。

谢谢!

【问题讨论】:

    标签: excel internet-explorer vba


    【解决方案1】:

    getElementsByClassName 是复数;即它代表一个集合。以下表示第一个具有此类的对象,然后单击其中的第一个锚标记。

    ie.Document.getElementsByClassName("search_for_watchers")(0).getElementsByTagName("a")(0).click
    

    如果要给元素赋值一个对象var,然后用var点击,需要设置var。

    【讨论】:

    • 谢谢先生。不知道还有复数形式。这意味着还有另一个具有该名称的类?奇怪哈哈。无论如何,它现在工作得很好;)
    • getElementsByClassName 返回具有该特定类名的所有元素的集合;可能有一个或一打或没有。
    【解决方案2】:

    你在这里两次进入无限循环:

    Do While ie.READYSTATE = 4: DoEvents: Loop
    Do Until ie.READYSTATE = 4: DoEvents: Loop
    

    例如,它看起来像这样:

    Do While ie.READYSTATE = 4
        DoEvents
    Loop
    

    : 不是 VBA 中的新行。


    确保稍微改变一下循环,如下所示:

    Do While NOT ie.READYSTATE = 4: DoEvents: Loop
    

    【讨论】:

    • 谢谢!我还没有运行整个代码,所以甚至没有注意到这一点。会尝试你的建议!
    【解决方案3】:

    您也可以遍历标签并找到您想要点击的标签,如下所示:

    Set tags = ie.document.getElementsByTagName("a")
    For Each tagx In tags
        If tagx.innerText = "Procurar por outros observadores para adiconar" Then
            tagx.Click
            Exit For
        End If
    Next
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-04-10
      • 2016-05-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-29
      • 1970-01-01
      • 2020-06-17
      相关资源
      最近更新 更多