【问题标题】:How to click on a javascript button on IE 11 using VBA?如何使用 VBA 在 IE 11 上单击 javascript 按钮?
【发布时间】:2020-06-17 02:14:14
【问题描述】:

VBA 代码不负责,因为它在 IE 11 上不起作用,即使不是以编程方式。

该按钮适用于 Chrome 或 Firefox,但我无法在我的计算机上使用 Selenium,它会引发错误。

我要求网站的编码团队更准确地告诉我这个按钮是如何在这个链接上创建的 (Exportar todo) 在这个链接上https://bananadesk.com/transactions/incoming

网站截图:

<a class="button -tertiary" href="javascript:export_all_to_excel()">Exportar Todo</a>

如果我检查 html 页面,我会看到如下内容:

o=null,i=null,a=/Version\/(\S+)\s+Safari/;if(navigator.userAgent){var s=navigator.userAgent,c=s.match(a);c&&s.indexOf("Chrome")===-1&&s.indexOf("Chromium")===-1&&(o="Safari",i=c[1])}n.exports={agent:o,version:i,match:r}},{}],21:[function(t,n,e){function r(t,n){Var... 

可能是因为他们的网站只支持 Chrome 和 Safari。

这是 VBA 代码,即使我正确输入了 If 块,它也不会单击 Exportar todo 按钮:

For Each MyHTML_Element In HTMLDoc.getElementsByClassName("button -tertiary")
Debug.Print "button found"
MyHTML_Element.Click: Exit For
Next

【问题讨论】:

  • 你能提供一个更长的按钮 html 的 sn-p 吗?它是一个实际的按钮元素吗?因为我看到的只是一个锚元素。除非是保密的,否则 URL 也会有所帮助。
  • 我看不到按钮,只有一个链接。试试这个:HTMLDoc.getElementsByClassName("button -tertiary")(0).click
  • @StavrosJon 我用图像捕获和链接更新了帖子,谢谢!
  • @Zwenn 谢谢!我会试试这个,但我怀疑它不会起作用,因为它们限制了代码中的浏览器类型
  • 哪些浏览器类型? IE 11 就是 IE 11。IE 11 是您主题的一部分。除此之外......点击链接就是点击链接。这不是火箭科学。

标签: javascript html excel vba internet-explorer-11


【解决方案1】:

当使用 VBA 脚本自动化 IE 浏览器时,getElementsByClassName() 方法返回一个类数组对象,该对象包含具有所有给定类名的所有子元素。所以,我们应该根据数组索引找到特殊元素。

示例代码如下

Public Sub ClickTest()

    Dim ie As Object

    Set ie = CreateObject("InternetExplorer.Application")
    With ie
        .Visible = True
        .Navigate2 "<web site url>"

        While .Busy Or .readyState <> 4: DoEvents: Wend

        ie.document.getElementsByClassName("button -tertiary")(0).Click
    End With
End Sub

网页资源如下:

  <a class="button -tertiary" href="javascript:alert('hello')">Exportar Todo</a>

以上示例在我这边运行良好(使用 IE 11),请检查并确保我们可以使用 VBA 在 IE 浏览器中找到链接。

然后,将javascript alert 函数改为export_all_to_excel() 函数,并检查export_all_to_excel() 函数中的代码,确保它们都支持IE 浏览器。

另外,这里还有一个关于Clicking on hyperlink with partial href on Internet Explorer using vba的帖子,你可以参考一下。

【讨论】:

  • @zhilvmsft 非常感谢您的详细解答!
  • @zwenn 在他的评论中建议了相同的代码,但它没有点击按钮。或者它可能会,但之后什么都没有发生,因为网站可能正在过滤支持的浏览器,然后没有运行 JS 功能。
  • 您可以在 export_all_to_excel() 函数中添加一个调试器(或使用 console.log() 函数),以检查该函数是否执行。此外,执行VBA脚本时,是否有任何错误?也可以使用F12开发者工具检查VBA打开的IE窗口是否有错误。
【解决方案2】:

最后我决定使用 Selenium 和 Chrome 来点击按钮,现在它可以工作了!谢谢你们的帮助

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-21
    • 2019-12-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-10
    相关资源
    最近更新 更多