【问题标题】:VBA to Click Dropdown Link in IE without Name/IDVBA在没有名称/ ID的IE中单击下拉链接
【发布时间】:2019-02-19 07:26:03
【问题描述】:

我正在尝试通过 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>

这是它的屏幕截图,以防这样更容易阅读......

编辑:我将鼠标悬停在父项上以显示我需要的链接是行 &lt;li title="vendor" class="current"&gt;

这是我点击此链接的一些尝试(在 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

在访问此链接之前,我可以正常浏览网站。

任何帮助都将不胜感激,因为我觉得我在反复尝试相同的解决方案。

【问题讨论】:

    标签: html vba excel internet-explorer-11


    【解决方案1】:

    你可以试试

    ie.document.querySelector("[title='Vendor Invoice Inquiry Thru Browser'][href='javascript:top.pageFrame.processSelection('VRJA');']").Click
    

    虽然听起来您可能必须先单击父项才能显示它?

    正如您在悬停时提到的,您可能需要找到正确的元素以将 FireEvent 应用于例如

    ie.document.querySelector("[title='Vendor']").FireEvent "onmouseover"
    

    【讨论】:

    • 感谢您的回复。当我尝试此方法时,我收到一条错误消息,提示“对象 JScriptTypeInfo 的方法 querySelector 失败”我不熟悉 JScriptTypeInfo 是什么,有什么想法吗?
    • 是的.. 它不喜欢选择器 href='javascript:top.pageFrame.processSelection('VRJA');.... 一会儿,我会调整的。
    • 试试修改后的版本。也可以试试 ie.document.querySelector("[title='Vendor Invoice Inquiry Thru Browser']").Click
    • 单独尝试 querySelector 行时出现同样的错误。如果我首先将 FireEvent 排队,也许它会起作用。为了进行 FireEvent 鼠标悬停,您知道我将如何获取该元素吗?它有一个标题 - “供应商”,但我不知道 getElementsByTitle 方法?可能值得注意的是,当悬停时,类变为“当前 sfHover”,可见性变为“可见”
    • 嗨,同样的问题:ie.document.querySelector("[title='Vendor Invoice Inquiry Thru Browser']")。点击?我已经为您的其他元素编辑了一个版本。您可以尝试不同的 FireEvents 甚至只是 .Click
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-02
    • 1970-01-01
    • 2016-04-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多