vba - 如何用vba选择li-tag?
问题描述
我在使用 vba 代码时遇到了一些问题。我想从我公司的内部网站获取一些数据到 excel 表中。我已经实现了更改日期并通过不同的网站运行一些 for-next,最后我想将这些网站中的数据提取到一些电子表格中。
但这让我心碎:我想在下拉字段 (li) 中选择一个特定值(此处为“B”)并更新站点。
这是Intranet站点的一部分:
<div class="dropdown btn-group">
<button class="btn btn-default dropdown-toggle" type="button" data-toggle="dropdown" aria-expanded="false">
<span class="dropdown-text">B</span>
<span class="caret"></span>
</button><ul class="dropdown-menu" role="menu">
<li class="" aria-selected="false">
<a data-action="A" class="dropdown-item dropdown-item-button">A</a>
</li>
<li aria-selected="true" class="active">
<a data-action="B" class="dropdown-item dropdown-item-button">B</a>
</li>
<li aria-selected="false" class="">
<a data-action="C" class="dropdown-item dropdown-item-button">C</a>
</li>
<li aria-selected="false" class="">
<a data-action="-1" class="dropdown-item dropdown-item-button">All</a>
</li>
</ul>
</div>
这是一个简短的 vba 脚本,没有其他循环和数据。有了它,我可以读出下拉列表的值 - 但我如何选择一个(即“B”)并更新页面?
Sub GetData()
Dim IE As New InternetExplorer, html As HTMLDocument
Dim elem As Object, data As String
With IE
.Visible = True
.navigate "site from intranet"
Do While .readyState <> READYSTATE_COMPLETE: Loop
Set html = .document
End With
data = ""
For Each elem In html.getElementsByClassName("dropdown-menu")(0).getElementsByTagName("li")
data = data & " " & elem.innerText
Next elem
Range("A1").Value = data
IE.Quit
End Sub
由于它来自我们的 Intranet,我无法发布整个代码,希望您无论如何都可以给我一些建议。
解决方案
您可以尝试使用属性 = 值 css 选择器
ie.document.querySelector("[data-action=B]").click
当我看到一个锚元素时,我使用点击。
您可能需要在父 li 上设置属性“class”、“active”;和/或 setAttribute "aria-selected", True
推荐阅读
- c# - 使用 C# 和 Firebase 的聊天应用程序 android 本机
- reactjs - 如何在 VS Code Mac 上保存代码?
- javascript - 使用 fetch API 在 React 中过滤掉 API 响应中的字段
- c - Scanf 导致分段错误 - 输入时间
- python - 使用 pysftp 下载大文件
- python - pandas to_hdf() 函数中 complevel 参数的作用是什么?
- f# - 我能知道 Xunit 中失败的实际表达式吗?
- java - 将对象/数组从 JSON 解析为 Java
- python - 为什么我在 Win 10 中使用 pip 时出现 Traceback 错误?
- angular - 仅从 div 滚动到 div