Как выполнить кнопку (Войти) на конкретном сайте?

Я нашел этот код VBA в Интернете, и он работает, например, на Facebook.

На https://www.solarmanpv.com/portal/LoginPage.aspx это так. не работа. Он открывает Internet Explorer, помещает учетные данные в нужные места, но не нажимает кнопку входа.

Ошибка «424» отображается в VBA, когда я пытаюсь запустить.

Sub LoginViaBrowser()
    Dim Dc_Usuario As String
    Dim Dc_Senha As String
    Dim Dc_URL As String
    Dim objIE As New InternetExplorer 'Referencie "Microsoft Internet Controls"

    objIE.Visible = True

    Dc_Usuario = "[email protected]"
    Dc_Senha = "pass"
    Dc_URL = "https://www.solarmanpv.com/portal/LoginPage.aspx"

    objIE.Navigate2 Dc_URL

    Do Until objIE.readyState = READYSTATE_COMPLETE
        DoEvents
    Loop

    objIE.document.all("uNam").innertext = Dc_Usuario
    objIE.document.all("uPwd").innertext = Dc_Senha

    objIE.document.all("login").submit

End Sub

person Gabriel Lorscheiter    schedule 29.09.2019    source источник
comment
Я думаю, что это, вероятно, обман. Вам нужно дождаться правильной загрузки страницы While objIE.Busy Or objIE.readyState ‹ 4: DoEvents: Wend, а затем использовать идентификаторы для целевых полей входа.   -  person QHarr    schedule 29.09.2019
comment
вы должны найти подходящие примеры: stackoverflow.com/search?q=vba+login   -  person QHarr    schedule 29.09.2019
comment
И имя, и идентификатор кнопки входа — Loginning, а не login.   -  person Tim Williams    schedule 29.09.2019


Ответы (2)


Пожалуйста, попробуйте использовать инструменты разработчика F12 для проверки html-элементов, тогда вы можете обнаружить, что идентификатор кнопки входа в систему — «Вход», а не «Вход».

Попробуйте изменить код, как показано ниже:

Sub LoginViaBrowser()
    Dim IE As Object

    Dim Dc_Usuario As String
    Dim Dc_Senha As String
    Dim Dc_URL As String

    Dim txtNam As Object, txtPwd As Object

    Dc_Usuario = "[email protected]"
    Dc_Senha = "pass"

    Set IE = CreateObject("InternetExplorer.Application")
    With IE
        .Visible = True
        .Navigate "https://www.solarmanpv.com/portal/LoginPage.aspx"

        While IE.ReadyState <> 4
            DoEvents
        Wend
        IE.Document.getElementById("uNam").Value = Dc_Usuario
        IE.Document.getElementById("uPwd").Value = Dc_Senha

        IE.Document.getElementById("Loginning").Click

    End With
    Set IE = Nothing
End Sub
person Zhi Lv    schedule 30.09.2019
comment
по-прежнему отсутствует правильная загрузка страницы, подождите - person QHarr; 30.09.2019
comment
Благодарю вас! Теперь он работает отлично! Серьезно, это сделает мою жизнь намного проще, я действительно ценю это! - person Gabriel Lorscheiter; 01.10.2019

Вы пытались вызвать клик по нему по id?

IE.Document.getElementById("Loginning").Click  
person SomeNerdAtWork    schedule 30.09.2019
comment
Спасибо, код, которым поделился @Zhi LV - MSFT, он использует эту строку, и теперь она отлично работает! - person Gabriel Lorscheiter; 01.10.2019