Нажмите кнопку на веб-сайте USPS, чтобы найти почтовый индекс 9 * git - PullRequest
2 голосов
/ 28 марта 2020

Веб-сайт USPS ZipCode и Excel VBA - у меня есть весь код, работающий для заполнения сайта, но я не могу нажать кнопку «НАЙТИ» с кодом Excel-VBA.

Вот URL-адрес сайта и весь код нажатия кнопки, который я отправил

https://tools.usps.com/zip-code-lookup.htm?byaddress


'All of the different submit Code I have tried:

html.all.getElementById("zip-by-address").Click
html.all.getelementbytagname("zip-by-address").Click
html.document.querySelector("Find[type=submit]").Click

html.document.getElementsByClassName("btn btn-primary").Click
html.document.getElementById("zip-by-address").Click

For Each Element In ie.document.getElementsByName("zip-by-address")
    If Element.className = "btn-primary" Then
        Element.Click
    End If
Next

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

For Each Element In ie.document.getElementsByTagName("zip-by-address")
    If InStr(Element.innerText, "Find") > 0 Then Element.Click
Next

ie.document.getElementByTagName("Find").FireEvent "onclick"

ie.document.getElementById("zip-by-address").FireEvent "onkeypress"
ie.document.getElementById("zip-by-address").FireEvent "onclick"

Set frm = ie.document.forms(0)
frm.submit

Ответы [ 2 ]

2 голосов
/ 28 марта 2020

Мне также нужно было заполнить поля города и штата. Вам не нужно выбирать опцию по адресу, поскольку она уже является частью URL.

.querySelector("#zip-by-address").Click эквивалентно .getElementById("zip-by-address").Click, но быстрее, поскольку современные браузеры (кашель IE кашель) оптимизированы для выбор с помощью css селекторов .

Public Sub ClickFindButton()

    Dim ie As SHDocVw.InternetExplorer

    Set ie = New SHDocVw.InternetExplorer

    With ie

        .Visible = True
        .Navigate2 "https://tools.usps.com/zip-code-lookup.htm?byaddress" 'url is already by address so no need to click for it

        Do
            DoEvents
        Loop While .Busy Or .ReadyState <> READYSTATE_COMPLETE

        With .Document

            .querySelector("#tCompany").Value = "The New York Times Company"

            .querySelector("#tAddress").Value = "620 Eighth Avenue"

            .querySelector("#tCity").Value = "New York"

            .querySelector("[value=NY]").Selected = True

            .querySelector("#zip-by-address").Click

            Stop

        End With
        .Quit
    End With
End Sub
0 голосов
/ 28 марта 2020

Поиск по Id

Пример

ie.Document.getElementById("zip-by-address").Click

enter image description here

...