html - 如何使用 VBA 单击 HTML 内文
问题描述
如何通过VBA单击“li”的内部文本?rhef 是动态的。我有 3 页,当加载表单时,默认情况下页面为 1,我必须单击第 2 页。我已经粘贴了下面的代码,当我一步一步看到时,行正在循环,并传递“difHTMLA.Click”行,但它既没有抛出错误也没有重新加载页面。请帮忙
Set difHTMLAs = doc.getElementsByTagName("li")
For Each difHTMLA In difHTMLAs
If difHTMLA.getAttribute("classname") = "swfPagingOtherPageArea swf-left" Then
If CStr(Trim(difHTMLA.innerText)) = "2" Then
difHTMLA.Click
End If
End If
Next difHTMLA
Exit For
<ul class="swfPaging">
<li>
<
</li>
<li class="swfPagingSelectedPageArea swf-left">
1
</li>
<li class="swfPagingOtherPageArea swf-left">
<a href="/wps/myportal/dynamic URL/">
2
</a>
</li>
<li class="swfPagingOtherPageArea swf-left">
<a href="/wps/myportal/dynamic URL/">
3
</a>
</li>
解决方案
您可以使用 css:nth-of-type
伪选择器来定位 parent 的类li
。Css 选择器通过 querySelector 应用以返回第一个匹配项,或者通过 querySelectorAll 应用以返回所有匹配项。然后,您需要with 类中的子a
标签。前面,下面,是一个 CSS 类选择器。它根据类属性名称选择元素。这是基于提供的 html。li
swfPagingOtherPageArea
.
ie.document.querySelector(".swfPagingOtherPageArea:nth-of-type(3) a")
第2页
或者
ie.document.querySelector(".swfPagingOtherPageArea:nth-of-type(4) a")
第 3 页
那是从起始页开始的。
在没有看到页面的情况下,更难就循环页面提出建议,因为元素可能会发生变化。例如,您可能会发现,当您在第二页上时,您无法使用.swfPagingOtherPageArea:nth-of-type(4) a
获取第 3 页,因为第 3 页现在是.swfPagingOtherPageArea:nth-of-type(3) a
ie 活动页面的类名称发生了变化,因此使用的正确索引也发生了变化。
如果仍然没有触发,那么您可能需要在元素上触发 FireEvent“onclick”
ie.document.querySelector(".swfPagingOtherPageArea:nth-of-type(3) a").FireEvent "onclick"
推荐阅读
- dart - StreamController 和 BehaviorSubject 是 Dart 中的流吗?
- javascript - 我的移动背景不会拉伸,而是有一个静态的地方。我似乎无法改变这一点
- multithreading - 读者-作家问题,有作家偏好
- c - 如何将二维数组从最大值排序到最小值
- python - Ansible grep 连续一行
- python - 我在特征脸图像识别部分有错误
- ruby-on-rails - 如何通过 capistrano 在远程生产服务器上使用 rails 控制台?
- java - 当程序等待按下按钮时,我该怎么做?
- python - 是否有一个 shell 脚本,我们可以在其中更新两个文件并更改第三个文件中的一行
- c - 试图从读取的文件中 fprintf 某个字符串