【问题标题】:Excel VBA to click item in html div classExcel VBA单击html div类中的项目
【发布时间】:2019-11-17 06:26:54
【问题描述】:

我是第一个使用 Excel VBA 进行 Web 自动化的新手。 到目前为止,我能够取得进展,但在尝试点击网站上看起来像按钮的东西时遇到了困难。 如果你能帮助我,请告诉我,我很感激。谢谢! 特定元素位于以下 html 代码中的 a 标记内:

<div class="sh-c-btn-group">
    <input name="pf.ok" type="hidden" value="">
    <input name="pf.cancel" type="hidden" value="">
    <a title="Sign In" class="sh-c-btn sh-c-btn--primary" onclick="postOk();">Sign In</a>
</div>

【问题讨论】:

  • 你试过getElementsByName("pf.ok")(1).Click吗?
  • 我确实尝试了 getElementsByName("pf.ok")(0).Click 但没有任何反应 -- index # (1) 抛出错误 -- 也尝试了 getElementsByClassName("sh-c-btn sh-c-btn--primary").点击失败
  • 它只是与 onclick 事件相关联。尝试使用 div.FireEvent “onclick”。这是一个很好的参考。 stackoverflow.com/questions/31221853/…

标签: excel vba webautomation


【解决方案1】:

您可以使用 querySelector 方法避免循环...

HTMLDoc.querySelector("a[title='Sign In']").click

【讨论】:

    【解决方案2】:

    Jenn 和 Jumpgroup,非常感谢您的帮助 :) 通过获取标题和类名成功地使用以下循环:

    Dim HTMLas As MSHTML.IHTMLElementCollection
    Dim HTMLa As MSHTML.IHTMLElement
    
    Set HTMLas = HTMLDoc.getElementsByTagName("a")
    
    For Each HTMLa In HTMLas
        If HTMLa.getAttribute("title") = "Sign In" And HTMLa.getAttribute("classname") = "sh-c-btn sh-c-btn--primary" Then
            HTMLa.Click
        Exit For
        End If
    Next HTMLa
    

    【讨论】:

      【解决方案3】:

      此代码循环直到页面加载: 做 做事件 循环直到 objIE.readystate = 4

      【讨论】:

      • 我已经进入循环,直到页面完全加载,并且能够在页面完全加载后填写几个表格。但不知何故无法点击该项目。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-03-20
      • 1970-01-01
      • 2015-01-15
      • 2020-05-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多