【问题标题】:EXCEL VBA: Web Page Button ClickEXCEL VBA:网页按钮点击
【发布时间】:2018-12-22 02:16:10
【问题描述】:

我在这个网站上尝试了多种代码变体,以让我的 VBA 点击网页上的按钮,但有一次除外,我无法让任何代码正常工作。有一次要么是侥幸,要么是为了尝试添加代码的下一步,我不知何故无意中改变了之前发生的事情。下面是网站的源代码和我目前正在使用的代码。现在我没有收到任何错误,而是在我包含按钮单击代码时加载下一页,如果只是清除表单并停留在当前网页上。

代码:

Public Sub TestIE()
Dim IE As Object
Dim aNodeList As Object, i As Long
Dim bNodeList As Object, p As Long


' Create InternetExplorer Object
Set IE = CreateObject("InternetExplorer.Application")

' You can uncoment Next line To see form results
IE.Visible = False

' Send the form data To URL As POST binary request
IE.Navigate "https://pe.fanniemae.com/pe/pricing/search"

' Statusbar
Application.StatusBar = "Page is loading. Please wait..."

' Wait while IE loading...
Do While IE.Busy
Application.Wait DateAdd("s", 1, Now)
Loop

IE.Visible = True

Set aNodeList = IE.document.querySelectorAll("input[type=checkbox]")
If aNodeList Is Nothing Then Exit Sub
For i = 0 To 18
aNodeList.Item(i).Checked = True
Next i


'IE.document.querySelector("button[type=submit]").Click

Set bNodeList = IE.document.querySelectorAll("button[type=submit]")
If bNodeList Is Nothing Then Exit Sub
For p = 1 To 1
bNodeList.Item(p).Click
Next p

End Sub

页面来源:

<div class="row submit">
        <button id="get-price" tabindex="3" type="submit" class="cell-right- 
         2">Get Prices</button>
        <div class="pricing-error-message"></div>

当我检查按钮上的元素时,它确实出现了代码的清晰表单部分,这是我所期望的,但无论出于何种原因,它正在清除表单而不是加载新页面。当我在 IE 中手动单击按钮时,它会按预期加载。

我认为正在运行的脚本:

  <script type="text/javascript">
    define('pageConf', function() {

        return null || JSON.parse('{\"lastPricingFactors\": 

 {\"priceIncrement\":\"18\",\"priceView\":\"total\",\"executionType\
 ":\"Mandatory\",\"levelType\":\"Product\",\"remittanceType\":\"ActualActual
 \",\"products\":\"160958\",\"1036FR\",\"102422\",\"163053\",\"160639\",\"
160058\",\"155509\",\"154232\",\"143846\",\"0005FR\",\"125331\",\"102301\",
\"114921\",\"115446\",\"144854\"],\"underwrittenWithDu\":false,\"
servicingReleased\":false,\"displayMarketFrozenMessage\":false,\"windows\":
[10,30,60,90],\"requestTimeMs\":1531424470700}}')
    });

    </script>

【问题讨论】:

  • 看看 Selenium WebDriver for VBA。一篇关于它的好帖子:codingislove.com/browser-automation-in-excel-selenium
  • 您确定这是要点击的正确元素吗?有没有相关的javascript?您可能需要使用 F12 并查找事件侦听器,并且可能需要执行其他操作以确保实际输入/保留输入的值。
  • 相当确定它是正确的元素,屏幕上只有 2 个按钮。使用此方法可以很好地单击另一个按钮,因此可能会按照您的建议进行其他操作。我对 java 的了解还不够,不知道是否有关联。当我右键单击并检查元素时,有一部分代码提到了清除表单,这是我在离开页面时所期望的,但它似乎并没有采取实际移动的下一步。我可以粘贴代码的任何部分来帮助比我更聪明的人吗?
  • 在上面添加了可能相关的脚本。

标签: excel vba web


【解决方案1】:

我能够使用一个选择案例,该案例在按钮生成的 URL 中插入了我想要选择的标准,而不必实际按下按钮,这似乎是一种解决方法。感谢您查看此内容。

【讨论】:

    猜你喜欢
    • 2017-06-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-28
    • 1970-01-01
    • 2016-05-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多