Можно ли нажать кнопку на веб-сайте после входа в систему с помощью VBA? - PullRequest
0 голосов
/ 13 июня 2019

Вот код, который я написал.В основном в части 1 заполняются поля имени пользователя и пароля для входа на нужный веб-сайт.После этого, во второй части, он фактически нажимает кнопку «Войти».Тем не менее, часть 3 должна нажать на кнопку «УПРАВЛЕНИЕ ПОРТФОЛИО» после того, как часть 1 и часть 2 были выполнены.Вот как выглядит HTML-код для кнопки «УПРАВЛЕНИЕ ПОРТФОЛИО».

Однако, похоже, что-то не так с моим кодом.На самом деле он запускает часть 1 и часть 2, поэтому он фактически входит на сайт, но после этого ничего не происходит.Кнопка «Управление портфелем» никогда не нажимается.

Знаете ли вы, как я могу исправить код, чтобы он сначала заходил на сайт со своими учетными данными, а затем нажимал кнопку «Управление портфелем»?Спасибо :)

Option Explicit

Public Sub Press_Button()

Dim objIE As SHDocVw.InternetExplorer 'microsoft internet controls (shdocvw.dll)
Dim htmlDoc As MSHTML.HTMLDocument 'Microsoft HTML Object Library
Dim htmlInput As MSHTML.HTMLInputElement
Dim htmlColl As MSHTML.IHTMLElementCollection
Dim the_input_elements As MSHTML.IHTMLElementCollection
Dim input_element As MSHTML.HTMLInputElement
Dim IeDoc As MSHTML.HTMLDocument

Set objIE = New SHDocVw.InternetExplorer

With objIE
    .Navigate "https://www.ndexsystems.com/fengine/fullservice/en/kerrfinancialsalogin.go?fromLogoff=true" ' Main page

    .Visible = 1
    Do While .readyState <> 4: DoEvents: Loop
    Application.Wait (Now + TimeValue("0:00:02"))

    'PART 1: set user name and password
    Set htmlDoc = .document
    Set htmlColl = htmlDoc.getElementsByTagName("INPUT")
    Do While htmlDoc.readyState <> "complete": DoEvents: Loop
    For Each htmlInput In htmlColl
       If htmlInput.Name = "textbox_password" Then
            htmlInput.Value = "***"
        Else
            If htmlInput.Name = "textbox_id" Then
                htmlInput.Value = "***"
            End If
        End If
    Next htmlInput

    'PART 2: click login
    Set htmlDoc = .document
    Set htmlColl = htmlDoc.getElementsByTagName("input")
    Do While htmlDoc.readyState <> "complete": DoEvents: Loop
    For Each htmlInput In htmlColl
        If Trim(htmlInput.Type) = "submit" Then
            htmlInput.Click
            Exit For
        End If
   Next htmlInput

   'PART 3: Clicks on portfolio management
   Do While objIE.Busy: DoEvents: Loop
   Do Until objIE.readyState = READYSTATE_COMPLETE: DoEvents: Loop
            Set IeDoc = objIE.document
            Set the_input_elements = IeDoc.getElementsByClassName("big_button")
            For Each input_element In the_input_elements
                If input_element.href = "javascript:changePageToFrontdoor(false);" Then
                    input_element.Click
                    Exit For
                End If
            Next input_element
End With

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