右键单击方法

右键单击方法

免责声明:这个问题的目的是为了创建一个问答,作为多个问题的参考,而不是多次解释它。

如何在 VBA 中获取按钮或其他对象的 HTML 元素以实现 IE 自动化?

例如:我想要从中获取“发布您的问题和答案”按钮的元素 ID超级用户

答案1

在这个例子中,我们使用的是流行的 Chrome 浏览器,尽管许多其他浏览器也有相同的检查 HTML 元素的方法。

右键单击方法

  1. 找到有问题的元素(在我们的例子中是“发布您的问题“ 按钮)。

  2. 右键单击元素

  3. 选择下拉项Inspect

在此处输入图片描述


这将带来F12 开发人员工具。此工具箱将自动突出显示您的元素。

在此处输入图片描述

如您所见,您的元素有几个选项可以引用它。最好的方法是使用它的ID,因为这始终是一个唯一值。

该元素的 ID 是submit-button-42,您可以在此找到它:

<id="submit-button-42">

在 VBA 中,您可以通过以下方式将变量设置为此元素:

Dim IE As InternetExplorer, myElement As Object
Set IE = New InternetExplorer
Set myElement = IE.document.getElementByID("submit-button-42")

不幸的是,并非每个元素都有 ID。此元素也包含在几个集合中。集合项的问题是,许多其他元素也可能包含在同一个集合中 - 这意味着它不是唯一的值。

在我们的示例中,有两个集合可供引用:classtagClassNamebtn__带有图标,我们可以从以下数据看出:

<button class="btn__with-icon"...>

并且TagName按钮(在上面同一个例子中,它直接列在类之前)。

在 VBA 中,您可以按如下方式为这些集合设置变量:

Dim IE As InteretExplorer, ieClassColl As Object, ieTagColl As Object
Set ieClassColl = IE.document.getElementsByClassName("btn__with-icon")
Set ieTagColl = IE.document.getElementsByTagName("button")

记住,这些都是收集项目。这意味着要引用我们所涉及的确切按钮,我们要么需要知道它的指数,或者我们可以用一个For...Each语句循环

如果你知道索引号是0,然后使用:

Set ieClassBtn = IE.document.getElementsByClassName("btn__with-icon")(0)

否则,您可以循环遍历它们:

Dim o As Object, oColl As Object
Set oColl = IE.document.getElementsByTagName("button")

For Each o In oColl
    If o.innerText = "Post Your Question And Answer" Then
        Exit For
    End If
Next

相关内容