none
PREENCHER CAMPOS DE LOGIN E SENHA DE PAGINA WEB E CLICAR NO BOTAO ENTRAR RRS feed

  • Pergunta

  • Boa Tarde,

    Estou testando fazer login em um site utilizando um formulário VB.NET.

    A página que estou tentando fazer o login é a seguinte:

    http://www.imperatriz.ma.gov.br/esic/restrito/index/

    <div id="campos">


    <span class="inputLogin"><input type="text" name="login" maxlength="20"> </span> <span class="inputLogin"><input type="password" name="password" maxlength="100"> </span> <input type="submit" class="inputBotao" name="btsub" value="Entrar">

    Os comandos que estou utilizando são os seguintes:


    para acessar a página:

     Private Sub BtnIrPar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnIrPar.Click
            WebBrowser1.Navigate(txtUrl.Text)
        End Sub


    para preencher o campos:

    WebBrowser1.Document.GetElementById("login").SetAttribute("login", CStr(txtUsuario.Text))
    WebBrowser1.Document.GetElementById("password").SetAttribute("value", CStr(txtSenha.Text))
    WebBrowser1.Document.GetElementById("btsub").InvokeMember("click")

    Porem, ele não está preenchendo o campos LOGIN, só preenche a senha, alguem aí pode verificar o erro que estou comentendo????


    ja testei esse código para outras páginas e funciona






    sábado, 20 de maio de 2017 17:48

Respostas

  • Boa tarde Rodrigo G. Ribeiro,

    Você está tentando pegar o campo pelo ID, sendo que no site se olhar o page source, ele só possui o class.

    Logo você não pode usar WebBrowser1.Document.GetElementById("login").SetAttribute("login", CStr(txtUsuario.Text)), precisa selecionar pela classe.

    HtmlElementCollection theElementCollection = default(HtmlElementCollection);
    theElementCollection = webBrowser1.Document.GetElementsByTagName("span");
    foreach (HtmlElement curElement in theElementCollection)
    {
        if (curElement.GetAttribute("className").ToString() == "example")
        {
            MessageBox.Show(curElement.GetAttribute("InnerText")); // Do something you want
        }
    }




    Att., Roberto Alves

    Por favor, lembre-se de Marcar como Resposta as postagens que resolveram o seu problema. Essa é uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.

    terça-feira, 30 de maio de 2017 16:42

Todas as Respostas

  • Olá, Rodrigo!

      O problema pode estar no fato de você não ter a informação do "Id" do input no seu html. Tenta esta modificação:

    <span class="inputLogin"><input type="text" id="login" name="login" maxlength="20"> </span>
    <span class="inputLogin"><input type="password" id="password" name="password" maxlength="100"> </span>

    Pode parecer uma dica óbvia, mas a web tem destas pegadinhas. Espero que ajude.

    Bom trabalho!

    sábado, 20 de maio de 2017 18:57
  • Opa xará,

    Não sei se o amigo entendeu minha pergunta, a página HTML não tenho acesso, quero fazer o login na url informada pelo vb.net.

    Quanto a ausência do ID no HTML esse não é o problema, até porque utilizando o código vb.net informado na pergunta inicial, consigo preencher o campo do password e clicar no botão, tudo via código, o que está acontecendo é que pelo código vb.net não estou conseguindo enviar o usuário para o campo login.

    Em resumo:

    consigo passar informação apenas para o campo password e executar o clique do botão entrar, ainda não consegui entender porque não consigo enviar informações para o campo LOGIN

    domingo, 21 de maio de 2017 12:23
  • Boa tarde Rodrigo G. Ribeiro,

    Você está tentando pegar o campo pelo ID, sendo que no site se olhar o page source, ele só possui o class.

    Logo você não pode usar WebBrowser1.Document.GetElementById("login").SetAttribute("login", CStr(txtUsuario.Text)), precisa selecionar pela classe.

    HtmlElementCollection theElementCollection = default(HtmlElementCollection);
    theElementCollection = webBrowser1.Document.GetElementsByTagName("span");
    foreach (HtmlElement curElement in theElementCollection)
    {
        if (curElement.GetAttribute("className").ToString() == "example")
        {
            MessageBox.Show(curElement.GetAttribute("InnerText")); // Do something you want
        }
    }




    Att., Roberto Alves

    Por favor, lembre-se de Marcar como Resposta as postagens que resolveram o seu problema. Essa é uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.

    terça-feira, 30 de maio de 2017 16:42
  • Amigo em vez de vc colocar login em ("login", CStr(txtUsuario.Text)).

    Vc coloca value ficando assim ("value", CStr(txtUsuario.Text))

    quinta-feira, 1 de março de 2018 04:41