Usuário com melhor resposta
PREENCHER CAMPOS DE LOGIN E SENHA DE PAGINA WEB E CLICAR NO BOTAO ENTRAR

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
- Editado Rodrigo G. Ribeiro sábado, 20 de maio de 2017 17:49
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.- Marcado como Resposta Guilherme Macedo SModerator quarta-feira, 31 de maio de 2017 17:37
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!
-
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
-
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.- Marcado como Resposta Guilherme Macedo SModerator quarta-feira, 31 de maio de 2017 17:37
-