Excel VBA使用虚拟键盘自动登录网页

时间:2016-12-09 14:04:50

标签: html vba excel-vba excel

我正在尝试通过VBA登录此网页:

Sub scraping()

    Dim IE As Object
    Dim UserName As String
    Dim Password As String
    Dim LogonForm As HTMLFormElement
    Dim SubmitInput As HTMLInputElement

    UserName = "XXXXXXXXx"
    Password = "XXXXXXXXX"

    With Session
        Set IE = New InternetExplorer
        With IE
            .Navigate "https://www.unicajabanco.es/PortalServlet?pag=1110902071492&menu0=particulares"
            .Visible = True

            Do Until (.READYSTATE = 4 And Not .Busy)
                DoEvents
            Loop

            Set LogonForm = .document.datos

            With LogonForm

                .user.Value = UserName
                .clave.Focus
                .clave.Value = Password

                For Each SubmitInput In .getElementsByTagName("INPUT")
                    If InStr(SubmitInput.getAttribute("alt"), "de Banca") Then
                        SubmitInput.Click
                        Exit For
                    End If
                Next

            End With
        End With
    End With

End Sub

id="clave"的输入附有虚拟键盘以输入密码。

我尝试使用clave填充.clave.Value = Password输入,但是当我点击ENTRAR按钮时,无法识别密码。如果我在ENTRAR输入时点击了clave按钮而没有任何值。

我也试过这段代码,但它不起作用:

For Each SubmitInput In .getElementsByClassName("tecla")
    If InStr(SubmitInput.getAttribute("onclick"), "W") Then
        SubmitInput.Click
        Exit For
    End If
Next

For Each SubmitInput In .getElementsByTagName("div")
    If InStr(SubmitInput.getAttribute("onclick"), "W") Then
        SubmitInput.Click
        Exit For
    End If
Next

如果我能帮助您输入密码并提交表格,我将不胜感激。

1 个答案:

答案 0 :(得分:1)

这是银行网站,它具有额外的安全功能,可以保护用户免受黑客攻击等。

如果您检查页面源,则通过脚本而不是实际的html将页面写入页面来创建一些html - 您的clave输入就是一个示例。

document.write('<input id="clave" class="campo" name="clave" maxlength="8" onBlur="blurVirtualKeyBoard(); if (this.value==\'\') datos.tipoTeclado.value=\'\';" onClick="if (this.value==\'\') datos.tipoTeclado.value=\'\';" onFocus="focusVirtualKeyBoard(this,\'acceso-usuario\',200,100);" readonly type="password"/>');

请注意,<input>具有readonly属性。因此,尝试直接设置<input>的值将失败,除非您尝试删除该属性。

有些人或许多人会认为尝试将此属性删除为可疑行为,因为网页抓取或自动化可能在法律上可疑 - 特别是对于银行网站;)

如果您进一步检查页面源,您会看到点击<input>会启动一个名为acceso-usuario的脚本。您可以尝试按照该代码执行的操作作为下一步。