登录网站

ron*_*ron 2 excel internet-explorer vba excel-vba

我正在尝试创建一个Excel宏,它将登录我的网站.我已经编写了宏来登录到其他网站,但这个有点不同.

当我使用以下代码以编程方式插入用户名和密码,然后以编程方式单击"登录"按钮,网页返回该消息

错误:请提供用户名和错误:请提供密码

Sub LogIn()
' Open IE and navigate to the log-in page    
    Set ie = CreateObject("InternetExplorer.Application")

    With ie
        .Visible = True
        .navigate "https://www.prudential.com/login"

' Loop until the page is fully loaded
        Do Until Not ie.Busy And ie.ReadyState = 4
            DoEvents
        Loop
        Application.Wait (Now + TimeValue("0:00:10"))

' Enter the necessary information on the Login web page and click the submit button
        ie.document.getElementById("username").Value = "abcdef"
        ie.document.getElementById("password").Value = "12345678"
        ie.document.getElementsByClassName("btn btn-primary btn-login btn-sm-block analytics-login")(0).Click

' Loop until the page is fully loaded
        Do Until Not ie.Busy And ie.ReadyState = 4
             DoEvents
        Loop
    End With

' Do stuff

' Quit IE
    ie.Quit
End Sub
Run Code Online (Sandbox Code Playgroud)

我可以看到我的代码已将用户名和密码插入到网页框中,但由于某些原因,在成功单击提交按钮后,未检测到用户名和密码.

什么代码会成功插入用户名和密码,以便网页处理? 当您收到以下错误消息时,您将知道您的代码是有效的:

我们无法验证您的用户名和密码.请再试一次.

谢谢你的帮助!

Teh*_*ipt 5

它实际上希望您发送密钥,因此您可以绕过此请求,如下所示:

ie.document.getElementById("username").Focus
ie.document.getElementById("username").Value = "abcde"
Application.SendKeys "f", True

ie.document.getElementById("password").Focus
ie.document.getElementById("password").Value = "1234567"
Application.SendKeys "8", True

ie.document.getElementsByClassName("btn btn-primary btn-login btn-sm-block analytics-login")(0).Click
Run Code Online (Sandbox Code Playgroud)

编辑:

Sub GetData()
    Dim ie As InternetExplorer
    Dim desc As IHTMLElement
    Set ie = New InternetExplorer
    With ie
        .navigate "https://www.prudential.com/login"
        .Visible = True
    End With

    Do While (ie.Busy Or ie.ReadyState <> READYSTATE_COMPLETE)
        DoEvents
    Loop

    ie.document.getElementById("username").Focus
    Application.SendKeys "abcdef"
    Application.Wait (Now + TimeValue("0:00:01"))

    ie.document.getElementById("password").Focus
    Application.SendKeys "12345678"
    Application.Wait (Now + TimeValue("0:00:01"))

    ie.document.getElementsByClassName("btn btn-primary btn-login btn-sm-block analytics-login")(0).Click

    Set ie = Nothing
End Sub
Run Code Online (Sandbox Code Playgroud)