VBA在没有名称/ ID的IE中单击下拉链接

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了VBA在没有名称/ ID的IE中单击下拉链接相关的知识,希望对你有一定的参考价值。

我正在尝试通过VBA点击公司网页上的链接。问题是html没有名称或ID。我在这个网站上看到了很多不同的场景,我一直在尝试它们,但我似乎无法点击这个链接。

我无法共享该网站,因为它是一个公司内部网站点,但我将分享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>

这是它的截图,以防这种方式更容易阅读... HTML Screenshot

编辑:我将悬停以显示我需要的链接的父项是行<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"

以上是关于VBA在没有名称/ ID的IE中单击下拉链接的主要内容,如果未能解决你的问题,请参考以下文章

当按钮没有ID或名称并且与另一个按钮具有相同的类时,在带有VBS的IE中单击按钮

如何使用VBA单击网页上的按钮(名称隐藏)?

使用VBA excel在iFrame中单击下拉选项

Excel VBA在IE11中使用自动完成填充文本框

VBA宏从IE中的链接下载多个文件

VBA 从 HKEX 网站选择下拉菜单值