Página 1 de 1

Automatização de login e senha, sem referência por ID [RESOLVIDO]

Enviado: Qua Dez 01, 2021 8:44 am
por Marzzona
Situação: Quero logar em um site, http://mime.lzt.com.br, mas estou com algumas dificuldades para implementar o código. Tentei buscar pelo nome do input e não funcionou.

Objetivo: Abrir o link, completar o login com o texto de uma célula que terá a informação, completar, da mesma forma, o espaço de senha e apertar posteriormente no botão para “entrar”.

Erro encontrado: Erro em tempo de execução ‘91’ - A variável do objeto ou a variável do bloco “With” não foi definida

Código VBA:

Código: Selecionar todos

Const sSiteName = "http://mime.lzt.com.br"
Sub login()

    Dim UserName As String, Password As String, LoginData As Worksheet
    Set LoginData = ThisWorkbook.Worksheets("PAINEL")
        UserName = LoginData.Cells(5, 3).Value
        Password = LoginData.Cells(6, 3).Value
        
    Dim ie As Object
        Set ie = CreateObject("InternetExplorer.Application")
    With ie
        .Navigate sSiteName
        ieBusy ie
        .Visible = True
        Dim oLogin As Object, oPassword As Object
        Set oLogin = .Document.getElementsByName("login")
        Set oPassword = .Document.getElementsByName("senha")
        oLogin(0).innerText = UserName
        oPassword(0).innerText = Password
        .Document.forms(0).submit
    End With

End Sub

Sub ieBusy(ie As Object)
    Do While ie.Busy Or ie.ReadyState < 4
        DoEvents
    Loop
End Sub

Re: Automatização de login e senha, sem referência por ID

Enviado: Qui Dez 02, 2021 12:33 pm
por webmaster
O problema é que o formulario de login está dentro de um iframe. O código abaixo deve funcionar:

Código: Selecionar todos

With ie
        .Navigate sSiteName
        ieBusy ie
        .Visible = True
        Dim myFrame As Object
        Set myFrame = .Document.frames("myFrame")
        Dim oLogin As Object, oPassword As Object
        Set oLogin = myFrame.Document.getElementsByName("login")
        Set oPassword = myFrame.Document.getElementsByName("senha")
        oLogin(0).innerText = UserName
        oPassword(0).innerText = Password
        .Document.forms(0).submit
 End With
Um ponto de atenção. Aqui eu precisei adicionar o site na lista de compatibilidade do IE. Do contrário, a propriedade Document vinha sempre vazia.

Re: Automatização de login e senha, sem referência por ID

Enviado: Qui Dez 02, 2021 2:44 pm
por Marzzona
Fiz a alteração no código, mas a mensagem que passei a receber foi:

"O método 'frames' do objeto'JScriptTypeInfo' falho"

Não sei qual a origem deste erro agora.

Re: Automatização de login e senha, sem referência por ID

Enviado: Qui Dez 02, 2021 3:54 pm
por Marzzona
Fiz uma alteração no códico que fez funcionar:

Sub login()
Dim ie As New InternetExplorer
With ie
.Visible = True
.Navigate2 sSiteName

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

With .Document.getElementById("myframe").contentDocument

.querySelector("[name=login]").innerText = "123"
.querySelector("[name=senha]").innerText = "password"

End With

While .Busy Or .ReadyState < 4: DoEvents: Wend
End With
End Sub

Re: Automatização de login e senha, sem referência por ID [RESOLVIDO]

Enviado: Qui Dez 02, 2021 10:11 pm
por webmaster