html - VBA在没有名称/ ID的IE中单击下拉链接
问题描述
我正在尝试通过 VBA 单击公司网页上的链接。问题是 HTML 没有名称或 ID。我在这个站点上看到了许多不同的场景,并且我一直在尝试它们,但我似乎无法单击此链接。
我无法共享该站点,因为它是公司 Intranet 站点,但我将共享 HTML 部分和我的代码尝试。
这是HTML。应该知道,只有将鼠标悬停在菜单上才能访问该链接。
<li title="vendor" class="current"><a class="sf-with-ul" href="javascript:void(0);">Vendor A/P Inquiry<span class="sf-sub-indicator"> »</span></a>
<ul style="width: 7.68em; float: none; display: none; visibility: hidden;">
<li title="Vendor Invoice Inquiry Thru Browser" style="width: 100%; float: left; white-space: normal;"><a style="width: auto; float: none;" href="javascript:top.pageFrame.processSelection('VRJA');">Vendor A/P Inquiry</a></li>
</ul>
</li>
编辑:我将鼠标悬停在显示我需要的链接的父项是行<li title="vendor" class="current">
这是我单击此链接的一些尝试(在 HTML 屏幕截图中以蓝色突出显示)
尝试1:
Dim link As Object
Dim doc As Object
Set doc = ieApp.document
For Each link In doc.Links
Debug.Print link.innerText
If link.innerText = "Vendor A/P Inquiry" Then
link.Click
Exit For
End If
Next link
尝试2:
Set ieAnchors = ieApp.document.anchors
For Each Anchor In ieAnchors
If Anchor.href = "javascript:top.pageFrame.processSelection('VRJA');" Then
Anchor.Click
Exit For
End If
Next Anchor
尝试 3:
Set buttonclick = ieApp.document.getElementsByTagName("a")
For Each element In buttonclick
If element.href = "javascript:top.pageFrame.processSelection('VRJA');" Then element.Click
Next element
在访问此链接之前,我可以很好地浏览网站。
任何帮助将不胜感激,因为我觉得我会一遍又一遍地尝试相同的解决方案。
解决方案
你可以试试
ie.document.querySelector("[title='Vendor Invoice Inquiry Thru Browser'][href='javascript:top.pageFrame.processSelection('VRJA');']").Click
尽管听起来您可能必须先单击父项才能显示它?
正如您在悬停时提到的,您可能需要找到正确的元素以将 FireEvent 应用于例如
ie.document.querySelector("[title='Vendor']").FireEvent "onmouseover"
推荐阅读
- c - 使用 sprintf 构建字符串时的问题
- excel - Excel Syntax Greater and Less than
- python - SQL server 2012 是否支持调用外部 python 脚本?
- xml - 如何在 vb.net 中将 xml 数据插入到 xml 文件的 xml 标记中
- pm2 - 系统重启后如何自动复活pm2
- ios - 如何在 ios swift 中制作透明的警报控制器
- python - 不同行中的 lambda 函数
- python - AttributeError:(“模块'pandas'没有属性'rolling_std'”
- node.js - ZeroMQ 消息为什么会乱码?
- json - Json解码失败?