VB .NET- Fazendo o Login via WebBrowser (HtmlDocument)
No artigo de hoje vou mostrar como podemos usar o componente WebBrowser para navegar e fazer o login em uma página web em um formulário Windows Forms usando os recursos do método GetElementById , SetAttribute e Invokemember. |
O controle WebBrowser permite que você hospede páginas da Web e outros documentos habilitados para navegadores em suas aplicações Windows Forms.
O WebBrowser
mantém uma lista de histórico de todas as páginas da Web visitadas durante uma
sessão de navegação. Ao definir a propriedade Url, ocorre
navegação para a URL especificada e o controle a adiciona ao final da lista do histórico.
A seguir o controle armazena as páginas Web dos sites visitados recentemente em um
cache
no disco rígido local. Cada página pode especificar uma data de expiração que
indica quanto tempo ele permanecerá no cache. Assim,
quando o controle navega para uma página, ele economiza tempo ao exibir uma
versão em cache, se disponível, em vez de baixar a página novamente.
Você pode usar a propriedade Refresh para forçar o WebBrowser a recarregar a página atual por meio de
download, garantindo que o controle exibe a versão mais recente.
As principais propriedades do controle WebBrowser são :
Url - Obtém ou
define o URL do documento atual. (equivale a chamar o método Navigate e passar
URL especificada)
Navigate - Carrega o documento no local especificado
GoBack – Navega para a página anterior no histórico de navegação
GoForward - Navega para a próxima página no histórico de navegação
GoHome - Navega para a home page do usuário atual. (Opções Internet)
GoSearch - Navega para a página de pesquisa padrão do usuário atual.
Stop - Cancela qualquer navegação pendente e pára quaisquer elementos de página
dinâmica, como, por exemplo, animações e sons de fundo.
Refresh - Recarrega o documento atualmente exibido no controle
Print - Imprime o documento exibido no momento no WebBrowser usando as
configurações de página e de impressão atual.
ShowPrintDialog – exibe a caixa de diálogo para impressão
ShowPrintPreviewDialog - exibe a caixa de diálogo para visualizar a impressão
Os principais eventos são:
Navigating -
Ocorre antes do controle navegar para um novo documento.(Disparado quando você
define uma nova URL ou quando o usuário clica em um link)
Navigated - Ocorre quando o controle navegou para um novo documento e começou a
carregá-lo. (Disparado antes do navegador iniciar o dowload da página)
ProgressChanged - Ocorre quando o controle tem informações atualizadas sobre o
progresso do download de um documento para o qual ele está navegando. É disparado periodicamente durante o download. Informe quantos bytes foram
baixados e quantos ainda são esperados.(você pode usar este evento para ativar a barra de
progresso.)
DocumentCompleted - Ocorre quando o controle termina de carregar um
documento.(Disparado quando a página foi completamente carregada.)
FileDownload - Ocorre quando o controle baixa um arquivo.
NewWindow - Ocorre antes que uma nova janela do navegador seja aberta
Você também pode manipular o conteúdo de uma página da Web por meio da
propriedade Document , que contém um objeto HtmlDocument que
fornece acesso gerenciado para o modelo de objeto de documento (DOM) HTML da
página atual.
A classe HtmlDocument fornece acesso programático para um documento HTML hospedado pelo controle de WebBrowser .
Principais propriedades:
All - Obtém
uma instância de HtmlElementCollection, que armazena todos os objetos de
HtmlElement para o documento.
Body - Obtém um HtmlElement para a marca de BODY .
Forms - Obtém uma coleção de todos os elementos de <FORM> no documento.
Images - Obtém uma coleção de todas as marcações de imagem no documento.
Links - Obtém uma lista de todos os hiperlinks dentro deste documento HTML.
Title - Obtém ou define o valor de texto da marca de <TITLE> no documento HTML
atual.
Url - Obtém o URL que descreve o local deste documento.
Principais Métodos:
CreateElement
- Cria um novo HtmlElement do tipo especificado de marca HTML.
ExecCommand - Executa o comando especificado no documento.
GetElementById - Recupera um único HtmlElement usando o atributo ID do elemento
como uma chave de pesquisa.
GetElementFromPoint - Recupera o elemento HTML localizado nas coordenadas
específicas de cliente.
GetElementsByTagName - Recuperar uma coleção de elementos com a marca HTML
especificada.
InvokeScript(String) - Executa uma função ativa de script definida em uma página
HTML.
OpenNew - Obtém novo HtmlDocument para usar com o método de Write .
Write - Grava uma nova página HTML.
Neste artigo vamos usar os métodos GetElementById(), SetAttribute e InvokeMember para interagir com os elementos de uma página web no controle WebBrowser e realizar o login em um web site como o Yahoo.
Acessando página de login do Yahoo teremos no navegador FireFox a página abaixo:
Selecionando os controles para login da página e clicando com o botão direito do mouse, podemos exibir o código fonte da página selecionada usando a opção Código-fonte da seleção do FireFox.
Abaixo vemos o código desta parte da página e identificamos os elementos usados para realizar o login. Vamos usar esses valores para interagir com a página via WebBrowser.
O que iremos fazer é fornecer digitar os valores de usuário e senha em um formulário Windows Forms e navegar até a página de login do Yahoo e atribuir os valores digitados na página enviando os dados via webbrowser.
Recursos usados :
Criando o projeto no VS 2013 Express Edition
Abra o VS 2013 Express for Windows desktop e clique em New Project;
A seguir selecione Visual Basic -> Windows Forms Application;
Informe o nome WebBrowser_Login e clique no botão OK;
No formulário form1.vb vamos incluir os seguintes controles a partir da ToolBox:
1 Label - usuario
1 TextBox - txtUsuario
1 Label - Senha, PasswordChar = *
2 Buttons - btnIrPara e btnLogin
1 WebBrowser - name = WebBrowser
Disponha os controles no formulário conforme o leiaute da figura abaixo:
Agora no evento Click do botão de comando Ir Para inclua o código que irá navegar até a página de Login do Yahoo:
Private Sub BtnIrPara_Click(sender As Object, e As EventArgs) Handles btnIrPara.Click
WebBrowser1.Navigate("https://login.yahoo.com/")
End Sub
|
Agora no evento Click do botão de comando Login inclua o código abaixo:
Private Sub btnLogin_Click(sender As Object, e As EventArgs) Handles btnLogin.Click
Try
WebBrowser1.Document.GetElementById("username").SetAttribute("value", txtUsuario.Text)
WebBrowser1.Document.GetElementById("passwd").SetAttribute("value", txtSenha.Text)
WebBrowser1.Document.GetElementById("signin").InvokeMember("click")
Catch ex As Exception
MessageBox.Show("Erro : " + ex.Message, "Erro", MessageBoxButtons.OK, MessageBoxIcon.Error)
End Try
End Sub
|
Neste código estamos obtendo o elemento 'username' e atribuindo a ele o valor informando na caixa de texto txtUsuario.Text : WebBrowser1.Document.GetElementById("username").SetAttribute("value", txtUsuario.Text)
A seguir obtemos o elemento 'passwd' e atribuímos a ele o valor definido na caixa de texto txtSenha.Text: WebBrowser1.Document.GetElementById("passwd").SetAttribute("value", txtSenha.Text)
Depois invocamos o método click do membro através do método InvokeMember("click").
Executando o projeto, informando o nome do usuário e sua senha e navegando até a página de login do Yahoo iremos obter:
Clicando no botão de Login os valores serão atribuídos aos campos do formulário e o evento click acionará o botão de enviar realizando o login no Yahoo:
Lembrando que o procedimento vale para praticamente qualquer formulário web.
Você pode incrementar o código incluindo outras funcionalidades do controle WebBrowser.
Pegue o projeto completo aqui: Navegador_VBNET.zip
Então
disse Jesus aos seus discípulos: Se alguém quiser vir após mim, renuncie-se a si
mesmo, tome sobre si a sua cruz, e siga-me;
Mateus 16:24
Veja os
Destaques e novidades do SUPER DVD Visual Basic
(sempre atualizado) : clique e confira !
Quer migrar para o VB .NET ?
Quer aprender C# ??
Quer aprender os conceitos da Programação Orientada a objetos ? Quer aprender o gerar relatórios com o ReportViewer no VS 2013 ? |
Gostou ? Compartilhe no Facebook Compartilhe no Twitter
Referências:
Super DVD Vídeo Aulas - Vídeo Aula sobre VB .NET, ASP .NET e C#
TreeView - Arrastar e Soltar (Drag and Drop) - Macoratti.net