我不能在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>
在网页中,只有一个按钮,点击后即可下载文件。没有URL。但是在检查代码之后,触发单击事件的是div元素。看看这张图。
"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,等待几秒钟,然后下载我的文件。
提前谢谢。欢迎任何帮助。
发布于 2018-01-11 01:53:24
您没有指定突出显示的部分是否是按钮的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
https://stackoverflow.com/questions/48193044
复制相似问题