【问题标题】:Simulate Click event on a DIV element模拟 DIV 元素上的 Click 事件
【发布时间】:2018-06-19 22:55:32
【问题描述】:

我无法模拟 div 元素上的点击事件。 HTML 代码是这样的:

<div id="export" data-export="true" data-timespan="">
    <button class="btn btn-default ladda-button" type="button" data-style="expand-right" data-spinner-color="#8899a6">
      <span class="Icon Icon--featherDownload"></span>
      <span class="ladda-label">
        Exportar datos
      </span>
    <span class="ladda-spinner"></span></button>
  <div class="hidden error server Callout Callout--danger">
    <p>Ocurrió un problema al exportar tus datos, inténtalo de nuevo más tarde.</p>
  </div>
</div>

在网页中,只是一个单击时下载文件的按钮。没有网址。但是查看代码后,是div元素触发了点击事件。看图。

Click to see image

“g.handle”会触发网站的 js.file。

我的 vba 代码非常适合在网站上执行其他操作,但我无法完成此任务。

我已经尝试了所有这些选项:

Set div = HTMLDoc.getElementById("export")
div.FireEvent ("onclick")
div.Click


HTMLDoc.all.Item
Call HTMLDoc.parentWindow.execScript("g.handle", "JavaScript")

没有任何作用。我现在有点受阻,我不知道如何继续。也许这没有解决方案?我对 HTML 几乎一无所知,对 Javascript 也一无所知。但它必须有一个解决方案,因为如果我手动执行,我点击那个 DIV,等待几秒钟并下载我的文件。

提前致谢。欢迎任何帮助。

【问题讨论】:

  • 您需要做的第一件事是edit 并修改您的标题
  • 您的图像中的线条是否是您右键单击按钮并选择Inspect时突出显示的线条?
  • 是的,这正是你所说的。

标签: vba excel


【解决方案1】:

您没有指定突出显示的部分是否是该按钮的 html 代码,但看起来它不是。

您可以获取按钮的类名。该名称可能是唯一的,也可能不是唯一的,如果不查看整个 html 代码,很难知道这一点,但是您可以将下面的 btn 变量设置为该类名的第一个实例。如果您的 html 代码中有多个类名,那么您将需要使用 For Each...Next 语句来遍历它们(除非您知道实例编号)。

所以我们将使用您班级的第一个实例,因此在末尾附加了 (0) 的原因。

Sub Test()

    Dim ie As New InternetExplorer, HTMLDoc As HTMLDocument, btn As Object
    ie.navigate Url 'whatever this may be

    ' Some code to wait for your page to fully load

    Set HTMLDoc = ie.document
    Set btn = HTMLDoc.getElementsByClassName("btn btn-default ladda-button")(0)
    btn.Click

End Sub

【讨论】:

  • 天啊!!!有效!!!!谢谢戴维斯。我想我对 DIV 元素很着迷,因为在查看 HTML 代码时,我没有看到任何“onclick”事件或按钮上的 href,因此我忽略了它。
猜你喜欢
  • 2016-08-06
  • 2013-05-02
  • 2017-02-26
  • 2012-11-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多