脚本有时会登录网站,但大多数时候会失败



我使用Internet Explorer创建了一个vba脚本,以使用我的凭据登录网站。问题是脚本有时完美运行,但大多数时候它在点击sign in按钮时失败,这意味着卡在那里。

Sub SignIn()
    Const Url$ = "https://member.angieslist.com/app/search?categoryName=Plumbing&isMisspelling=false&query=Plumbing&categorySearchType=legacy&category=107"
    Dim IE As New InternetExplorer, HTML As HTMLDocument
    Dim oPass As Object, oMail As Object, oButton As Object
    With IE
        .Visible = True
        .navigate Url
        While .Busy Or .readyState < 4: DoEvents: Wend
        Set HTML = .document
        With HTML
            Do: DoEvents: Loop Until .querySelectorAll("#login--login-email").Length > 0
            Set oMail = .querySelector("#login--login-email")
            oMail.Focus
            oMail.innerText = "useremail"
            Do: DoEvents: Loop Until .querySelectorAll("#login--login-password").Length > 0
            Set oPass = .querySelector("#login--login-password")
            oPass.Focus
            oPass.innerText = "password"
            Do: DoEvents: Loop Until .querySelectorAll("#login--login-button").Length > 0
            Set oButton = .querySelector("#login--login-button")
            oButton.Focus
            oButton.Click 'It gets here stuck most of the times
        End With
    End With
End Sub

如何登录该站点而不会失败?

这可能会起作用...50/50 射击。

  Sub SignIn()
Const Url$ = "https://member.angieslist.com/app/search?categoryName=Plumbing&isMisspelling=false&query=Plumbing&categorySearchType=legacy&category=107"
Dim IE As New InternetExplorer, HTML As HTMLDocument
Dim oPass As Object, oMail As Object, objElement As Object, objCollection As Object
With IE
    .Visible = True
    .navigate Url
    While .Busy Or .readyState < 4: DoEvents: Wend
    Set HTML = .document
    With HTML
        Do: DoEvents: Loop Until .querySelectorAll("#login--login-email").Length > 0
        Set oMail = .querySelector("#login--login-email")
        oMail.Focus
        oMail.innerText = "useremail"
        Do: DoEvents: Loop Until .querySelectorAll("#login--login-password").Length > 0
        Set oPass = .querySelector("#login--login-password")
        oPass.Focus
        oPass.innerText = "password"
        Set ElementCol = IE.document.getElementsByClassName("btn btn-sm btn-primary btn-block btn-flat")
        ElementCol.Item(0).Click
    End With
End With

结束子

相关内容

最新更新