Веб-страница автоматического входа в систему VBA и получение данных

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

Ниже мой код, я получаю прикрепленную ошибку

Снимок экрана с ошибкой

Sub test()
    Dim ie As Object
    Dim objCollection As Object
    Dim i As Integer

    Set ie = CreateObject("InternetExplorer.Application")
    ie.Visible = True
    ie.navigate "https://portal.expeditors.com/expo/login"

    Do While ie.Busy
        Application.Wait DateAdd("s", 1, Now)
    Loop

    'Get all the elements with input tag name
    Set objCollection = ie.document.getElementsByTagName("input")
    i = 0
    'Loop through all elements and find login form and fill it
    While i < objCollection.Length
        'Login name
        If objCollection(i).Name = "username" Then
            objCollection(i).Value = "bom-sumand"
        End If

        'Store login button in object
        If objCollection(i).Type = "submit" Then
            Set objElement = objCollection(i)
        End If
        i = i + 1
    Wend

    'Click login
    objElement.Click
    'Clean up
    Set ie = Nothing
End Sub

person Suman    schedule 29.10.2018    source источник
comment
Какие ссылки вы проверили?   -  person Imran Malek    schedule 29.10.2018
comment
Здравствуйте, Имран, спасибо за ответ, не понял ваш вопрос? не могли бы вы объяснить   -  person Suman    schedule 29.10.2018
comment
Я не получаю никаких сообщений об ошибках при выполнении вашего кода, убедитесь, что вы добавили ссылку на элементы управления Интернетом в редакторе VBA.   -  person arun v    schedule 29.10.2018
comment
Попробуйте использовать Internet Explorer Medium, если проблема не исчезнет. Может быть GetObject (новый: {D5E8041D-920F-45e9-B8FB-B1DEB82C6E5E}) — вам нужно проверить   -  person QHarr    schedule 29.10.2018
comment
Здравствуйте, Арун, Microsoft Internet Controls уже добавлены в справочники.   -  person Suman    schedule 29.10.2018
comment
Пожалуйста, проверьте тот же вопрос ‹stackoverflow.com/questions/30086425/  -  person arun v    schedule 29.10.2018


Ответы (2)


Макрос пытается и не может открыть второй экземпляр IE, попробуйте это.

Sub test()
Dim ie As Object
Dim redURL As String
Dim objCollection As Object
Dim i As Integer

redURL = "https://portal.expeditors.com/expo/login"
On Error Resume Next
Set ie = GetObject(, "InternetExplorer.Application")
If Err Then
    Set ie = CreateObject("InternetExplorer.Application")
End If
On Error GoTo 0
ie.Visible = True
ie.Navigate redURL

Do While ie.Busy
Loop
End Sub
person arun v    schedule 29.10.2018
comment
Арун, спасибо, я могу перемещаться по веб-странице, но не могу обновить свои данные для входа. - person Suman; 29.10.2018

Я бы использовал доступные идентификаторы, а не зацикливался, чтобы найти поля ввода и войти в систему. Это гораздо более быстрые методы выбора. Вы можете добавить .Focus. Кроме того, в некоторых случаях замените InternetExplorer на InternetExplorerMeduim.

Если проблема не устранена, проверьте настройки Интернета на случай, если сайт заблокирован.

Откройте URL-адрес, создав экземпляр IE напрямую.

Option Explicit
Public Sub Login()
    Dim ie As New InternetExplorer               'InternetExplorerMedium
    Const MAX_WAIT_SEC As Long = 5
    Dim t As Date, ele As Object
    With ie
        .Visible = True
        .navigate "https://portal.expeditors.com/expo/login"

        While .Busy Or .readyState < 4: DoEvents: Wend

        With .document

            Do
                DoEvents
                On Error Resume Next
                Set ele = .getElementById("j_username")
                On Error GoTo 0
                If Timer - t > MAX_WAIT_SEC Then Exit Do
            Loop While ele Is Nothing

            If ele Is Nothing Then Exit Sub

            With ele
                .Focus
                .Value = "bob"
            End With
            With .getElementById("j_password")
                .Focus
                .Value = "penny"
            End With

            .getElementById("signInBtn").Click

        End With

        While .Busy Or .readyState < 4: DoEvents: Wend

        Stop                                     '<== Delete me later
        .Quit
    End With
End Sub
person QHarr    schedule 29.10.2018
comment
Получение ошибки в этом коде While .Busy Or .readyState ‹ 4: DoEvents: Wend and Error is Ошибка выполнения '-2147467259 (80004005); Ошибка автоматизации Неопределенная ошибка - person Suman; 30.10.2018
comment
Попробуйте запустить еще раз и используйте Dim, т.е. как New InternetExplorerMedium. - person QHarr; 30.10.2018
comment
Добавлен Dim, т.е. как новый InternetExplorerMedium, все та же проблема. Ошибка времени выполнения '-2147467259 (80004005); Ошибка автоматизации Не указано - person Suman; 30.10.2018
comment
Сайт занесен в черный список вашими настройками безопасности? - person QHarr; 30.10.2018
comment
да, вы правы, автоматическое определение настроек было отключено в Internet Explorer, теперь все работает отлично, большое спасибо за отличную поддержку - person Suman; 30.10.2018
comment
Хорошо, сообщение принято к сведению - person Suman; 31.10.2018
comment
пытаясь перейти дальше, получая требуемый объект ошибки времени выполнения, т.е. BaseAdvancedShipmentSearch&reference=4220340930" rel="nofollow noreferrer">expo.expeditors.com/expotr/ - person Suman; 31.10.2018
comment
Я не думаю, что ошибка будет в этой строке. В какой строке на самом деле ошибка? - person QHarr; 31.10.2018
comment
С .getElementById(j_username) .focus .Value = bob End With - person Suman; 31.10.2018
comment
попробуйте отредактированную версию и дайте мне знать. Существует временной цикл, который вы можете увеличить с 5 секунд, чтобы дождаться появления элемента. - person QHarr; 31.10.2018
comment
да, проблема решена, далее необходимо загрузить все документы, связанные по этим ссылкам, URL expo.expeditors.com/expotr/ - person Suman; 31.10.2018
comment
Пожалуйста, задайте новый вопрос и будем рады помочь. Имейте в виду, что при входе в систему вам, скорее всего, потребуется поделиться всем HTML-кодом страницы. pastebin.com подходит для этого. - person QHarr; 31.10.2018
comment
Вы отказались на этом основании? Что не хватает, пожалуйста, из вышеперечисленного? - person QHarr; 01.11.2018
comment
Вы сказали, что проблема связана с настройками Интернета и необходимостью ожидания ... как другой ответ относится к одному из них или вводу вашей информации? - person QHarr; 01.11.2018
comment
Как вы упомянули, что я должен задать новый вопрос, поэтому я разместил новый вопрос для этого запроса, надеюсь, мое понимание правильное? - person Suman; 01.11.2018
comment
да, после настройки Интернета я могу войти на веб-страницу через VBA Excel, однако мне нужно доработать этот скрипт, поэтому я разместил новый вопрос - person Suman; 01.11.2018