IE Automation VBA - скрытая кнопка - PullRequest
0 голосов
/ 17 мая 2018

Я пытаюсь автоматизировать вход через веб-сайт и наткнулся на то, что, по моему мнению, является скрытой кнопкой.

Использование inspect element - это все, с чем мне нужно работать.

<button onclick="javascript:ga('send', 'event', 'Sign In','click','Sign In');" type="submit">Sign In</button>

Я пытался использовать getElementById, getElementsByTagName, getElementsByName и т. Д., Но я не знаком со скрытыми предметами или как получить к ним доступ.Есть ли способ обхода и теги ID скрытых предметов?

URL-адрес: https://www.eurocarparts.com/login?

Любая помощь будет признательна.

Ответы [ 2 ]

0 голосов
/ 18 мая 2018

Здесь вы используете CSS Selector

Требуется VBE> Инструменты> Ссылки> Библиотека объектов Microsoft HTML и элементы управления Интернетом

Option Explicit

Public Sub GetButton()

    Dim IE As New InternetExplorerMedium, html As HTMLDocument '<==InternetExplorerMedium rather than InternetExplorer because for some reason I was getting interface unknown without the change

    With IE
        .Visible = True
        .navigate "https://www.eurocarparts.com/login"
        While .Busy Or .readyState < 4: DoEvents: Wend
        Set html = .document
    End With

    Dim button As HTMLButtonElement
    Set button = html.body.querySelector("body > section > section.container.content-section.cookiebar > section.row.account-container > div.col-xs-12.col-sm-6.col-md-6.account-box.first > div > form > button")

End Sub

Если вы вставили в ближайшее окно следующее:

?button.innerhtml

Вы получаете:

Sign In

Примечание: @ отличное сокращение SIM-карты.

.querySelector("button[onclick*='Sign In']").Click
0 голосов
/ 17 мая 2018

Вы зацикливаете все кнопки документа, пока не найдете те, которые имеют тип «Отправить» и «Вход» внутри:

Set allButtons = YOURIEOBJ.document.getElementsByTagName("button")
Do While i < allButtons.Length
    If allButtons(i).Type = "submit" And allButtons(i).innerText = "Sign In" Then
        allButtons(i).Click
        Exit Do
    End If
    i = i + 1
Loop

Иногда innerText не дает вам «Войти». Вы можете использовать .Text или .innerHTML, один из них даст вам «Вход».

...