没有使用 JSON 的名称或 ID 的 Excel VBA 单击网站按钮



我正在使用excel VBA打开这个网站: 法律和一般, 然后,它需要单击"基金价格和费用"按钮。

用chrome检查网页,我可以看到这个按钮有以下代码:

<div class=" selected tab" tabindex ="0" role="button" aria-pressed="true">...</div>

HTML 'view source' 建议脚本类型="application/json">

我对这一切感到非常困惑。有谁知道我如何选择这个按钮?到目前为止,我有这段代码:

Set HTMLDoc = .document
Set objElement = HTMLDoc.getElementsByClassName("Select - Tab - Fund prices and charges")(0)
objElement.Click
.Quit

任何帮助将不胜感激。

问候

戴夫

如果只对那一个选项卡感兴趣,我会首先使用 css 类选择器通过其类名获取包含所有选项卡的父元素 (div(。然后,我将使用子组合器与 nth-child(( 选择器结合使用,通过其类名获取第二个子div:

.querySelector(".table-view__tabs > div:nth-child(2)").Click 'Select tab direct

如果可能对所有 3 个选项卡感兴趣:

我将首先使用 css 类选择器按其类名获取包含所有选项卡的父元素 (div(。然后,我将使用子组合器通过类名抓取子div(即选项卡(。我会索引到返回的节点列表中以单击所需的选项卡:

Set tabs = .querySelectorAll(".table-view__tabs > div") 'select all tabs then index in for tab of choice
tabs.Item(1).Click       

VBA:

Option Explicit
Public Sub ClickButton()
Dim ie As SHDocVw.InternetExplorer
Set ie = New SHDocVw.InternetExplorer
With ie
.Visible = True
.Navigate2 "https://fundcentres.lgim.com/uk/workplace-employee/fund-centre/#Product=WorkSave-Pension-Plan-(generation-3)"
While .Busy Or .ReadyState <> 4: DoEvents: Wend
With .Document
.querySelector(".table-view__tabs > div:nth-child(2)").Click 'Select tab direct
Stop  'Delete me later
Dim tabs As Object
Set tabs = .querySelectorAll(".table-view__tabs > div") 'select all tabs then index in for tab of choice
tabs.Item(1).Click                   '0 based so first tab is 0, second is 1 etc
Stop                                 'Delete me later
End With
Stop                                     '<==Delete me later
.Quit
End With
End Sub

读数:

  1. CSS 选择器
  2. 子运算器
  3. 类选择器
  4. :第n个孩子
  5. document.querySelectorAll
  6. document.querySelector

参考资料(VBE>工具>参考资料(:

  1. Microsoft互联网控制

最新更新