模拟DIV元素上的Click事件

时间:2018-01-10 17:33:49

标签: vba excel-vba excel

我无法模拟div元素上的click事件。 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事件。看图像。

Click to see image

那&#34; g.handle&#34;触发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,等待几秒钟并下载我的文件。

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

1 个答案:

答案 0 :(得分:2)

您没有指定突出显示的部分是否是该按钮的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