Попытка войти на веб-страницу из Excel VBA, но имя пользователя и пароль недоступны - PullRequest
0 голосов
/ 20 октября 2018

Я пытаюсь автоматизировать вход на веб-страницу, используя код VBA в Excel.Я могу установить значение имени пользователя и пароля, но оно выглядит серым, и веб-страница, похоже, его не распознает.Когда я отправляю событие click на кнопку входа, он говорит, что я не ввел имя пользователя и пароль.Сначала я попытался установить фокус на полях имени пользователя и пароля, но безуспешно.

Sub test_login()
    Set obj_Shell = CreateObject("Shell.Application")
    IE_count = obj_Shell.Windows.count
    On Error Resume Next
    For x = 0 To (IE_count - 1)
        my_url = obj_Shell.Windows(x).Document.Location
        ' actual url=http://community.betfair.com
        If my_url Like "*community*" Then
            Set ie = obj_Shell.Windows(x)
            Exit For
        Else
        End If
    Next
    On Error GoTo 0
    Set username_box = ie.Document.getelementbyid("username")
    username_box.Value = "myusername"
    Set password_box = ie.Document.getelementbyid("passwordText")
    password_box.Value = "mypassword"
    Set login_button = ie.Document.getelementbyid("login")
    login_button.Click

End Sub

1 Ответ

0 голосов
/ 20 октября 2018

Страница ожидает ввода текста с помощью нажатий клавиш, а это означает, что страшные SendKeys, я думаю, необходимы.Следующие работы:

Option Explicit
Public Sub GetInfo()
    Dim IE As New InternetExplorer
    With IE
        .Visible = True
        .Navigate2 "http://community.betfair.com/"

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

        With .document

            With .getElementById("username")
                .Focus
                SendKeys "Bob"
            End With

            SendKeys "{tab}"

            Application.Wait Now + TimeSerial(0, 0, 1)

            With .getElementById("passwordText")
                .Focus
                SendKeys "Banana"
            End With

            Application.Wait Now + TimeSerial(0, 0, 1)

            .getElementById("login").Click

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

            Stop '<==Delete me later

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