IE VBA Как нажать на элемент SVG - PullRequest
0 голосов
/ 09 апреля 2019

Моя цель - автоматизировать процесс, который требует перехода на определенный веб-сайт, введите номер 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

Ответы [ 2 ]

0 голосов
/ 09 апреля 2019

Это был бы оптимизированный метод, но мне кажется, что страница зависла для меня

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
0 голосов
/ 09 апреля 2019

На основании сайта и того, что вы пытаетесь сделать, это должно работать:

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...