【问题标题】:How to click on "Submit" button from a website如何从网站点击“提交”按钮
【发布时间】:2019-11-17 07:07:21
【问题描述】:

我是 VBA 新手,偶然发现了这个问题,我无法使用 vba 代码自动单击网站上的“提交”按钮。我已经多次调整我的代码,但它总是跳过“e.click”这一行。下面是我最近的代码和网站元素的图像。

希望有人能在这里点亮一些灯。

Set tags = objIE.Document.getElementById("alltab").getElementsByTagName("a")
For Each e In tags
    If e.getAttribute("alt") = "Submit a Contract" Then
        e.Click
    End If
next

website's elements

【问题讨论】:

  • 我在问题之前设置了一个断点,然后使用即时窗口慢慢逐步检查e是否设置正确,如果我应该考虑通过类或ID获取e,是否启用了e并在我点击时准备就绪,页面是否仍在加载,我的点击是否被不可见层拦截,每次点击后我是否允许有足够的时间进行页面响应,我是否必须点击 e 或者我可以发送 Space 或 Enter ,我可以使用 e 的任何其他属性来解决这个问题吗?每个答案都让我更近一步,直到我把问题归零。

标签: html vba internet-explorer web-scraping automation


【解决方案1】:

您可以简单地将attribute = value 选择器用于alt 属性。又好又快。如果您不需要,您不想循环整个集合。另外,我相信在任何循环中,您都想Exit For

objIE.document.querySelector("[alt='Submit a Contract']").click

【讨论】:

  • 感谢 QHarr。我尝试了您的代码,但它给了我一个“需要对象”错误。不太清楚为什么。 (PS:我忘了把 Next 循环放在帖子里,谢谢你抓住它)。
  • 1.用 F8 逐行检查是否是时间问题。在执行上述行之前确保页面已加载。 2. 如果错误仍然存​​在,请检查您的元素是否在父 iframe 或框架标签内。告诉我,
【解决方案2】:

请检查您的代码,从您的屏幕截图看来,超链接(html 一个标签)不在 alltab 表中。

请尝试按类名查找表并修改代码以添加 ID 属性:

按 ID 属性查找表(为第二个表添加 ID 属性):

Set tags = doc.getElementById("table id").getElementsByTagName("a")

For Each e In tags
    If e.getAttribute("alt") = "Submit a Contract" Then
        e.Click
    End If
Next e

按类名查找表:

Set tags = doc.getElementsByClassName("belowDealButtonBox")(0).getElementsByTagName("a")

For Each e In tags
    If e.getAttribute("alt") = "Submit a Contract" Then
        e.Click
    End If
Next e

【讨论】:

    猜你喜欢
    • 2016-03-30
    • 2015-12-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-13
    • 2013-04-10
    相关资源
    最近更新 更多