【问题标题】:IE VBA How to click on a SVG elementIE VBA 如何点击 SVG 元素
【发布时间】:2019-08-31 00:13:18
【问题描述】:

我的目标是自动化需要进入某个网站的过程,输入 BOL 编号,然后单击搜索按钮以查阅文档。

我无法点击搜索按钮。

Dim oBrowser As Object
Dim HTMLdoc As MSHTML.HTMLDocument
Dim htmlInput As MSHTML.HTMLInputElement
Dim htmlColl As MSHTML.IHTMLElementCollection

Set oBrowser = CreateObject("InternetExplorer.Application")

With oBrowser


            'Open Browser
            .navigate "https://www.paquetexpress.com.mx/rastreo-de-envios" 
            .Visible = 1
            Do While .readyState <> 4:
            DoEvents:
            Loop
            Application.Wait (Now + TimeValue("0:00:02"))


            'Enter BOL Number
            Set HTMLdoc = .document
            Set htmlColl = HTMLdoc.getElementsByTagName("INPUT")
            Do While HTMLdoc.readyState <> "complete": DoEvents: Loop
            For Each htmlInput In htmlColl
                If htmlInput.Name = "trackingguides" Then
                     htmlInput.Value = "10101010101"
                     Exit For
                End If
            Next htmlInput


'************* I'm having issues with this section **************

            'Click Search
            Set HTMLdoc = .document
            Set htmlColl = HTMLdoc.getElementsByTagName("svg")
            x = 1
            Do While HTMLdoc.readyState <> "complete": DoEvents: Loop


            For Each htmlInput In htmlColl
                    If InStr(1, htmlInput.outerHTML, "0 0 16 16") > 0 Then
                            If htmlInput.offsetTop > 5 Then
                                htmlInput.Click
                                Exit For
                            End If
                    End If
            Next htmlInput

  '**************************************************************
End With

【问题讨论】:

  • 我尝试在我这边调试您的代码,我发现您的代码正在单击按钮,但网站上没有任何反应。如果我手动将值粘贴到文本框中并单击按钮,那么网站上也没有发生任何事情。在控制台中,我收到了与 CORS 相关的消息和其他错误。 imgur.com/a/Ka5wSAu 所以请尝试检查您是否能够手动执行此操作以及是否出现任何错误。它可以帮助缩小问题范围。
  • 当我手动操作时,它允许我在网页上看到一条错误消息,因为“10101010101”只是一个随机数。当我运行宏时,我什至没有达到这一点。它只是在文本框中引入数字。
  • 您能否再次尝试使用正确的输入调试您的代码?请检查您的代码卡在哪一行,当时是否给出任何错误或警告消息?它可以帮助缩小问题范围。

标签: vba internet-explorer svg


【解决方案1】:

根据网站和您正在尝试做的事情,这应该有效:

HTMLdoc.getElementsByClassName("svg-icon svg-fill")(1).Click

【讨论】:

    【解决方案2】:

    这将是一种优化的方法,但页面对我来说似乎挂起

    Option Explicit
    
    'VBE > Tools > References:
    ' Microsoft Internet Controls
    Public Sub EnterInfo()
        Dim ie As New InternetExplorer, event_onClick As Object
    
        With ie
            .Visible = True
            .Navigate2 "https://www.paquetexpress.com.mx/rastreo-de-envios"
    
            While .Busy Or .readyState < 4: DoEvents: Wend
    
            With .document
                Set event_onClick = .createEvent("HTMLEvents")
                event_onClick.initEvent "click", True, False
                .querySelector("#tracking__input__container input").Value = "10101010101"
                With .querySelector(".searchicon")
                    .FireEvent "onclick"
                    .dispatchEvent event_onClick
                End With
            End With
            Stop
            .Quit
        End With
    End Sub
    

    【讨论】:

    • 谢谢 QHarr。我仍然遇到搜索按钮的问题。我无法点击它。
    • 附加了一个事件。您可以尝试 .FireEvent 或附加一个事件,如上面的编辑所示。
    • 你觉得应该引入索引号吗​​?也应该使用“焦点”吗?
    • 我需要在某个时候再看一遍。不确定,因为即使手动执行任务,页面也不能很好地响应。当您手动执行此操作时,它是否总是按预期运行?我认为目前部分设计不佳。不,不需要索引。
    猜你喜欢
    • 1970-01-01
    • 2017-06-20
    • 1970-01-01
    • 1970-01-01
    • 2012-10-06
    • 2021-12-02
    • 2022-01-07
    • 2019-07-09
    • 2013-06-16
    相关资源
    最近更新 更多