Usuário com melhor resposta
Robô: Passa os parametros e retorna o conteúdo da página

Pergunta
-
Boa Noite,
Caros, preciso de um exemplo de como preencher o CNPJ e depois executar o evento click do botão pesquisar.
Exemplo:
1º Passo: Preencho o campo CNPJ e depois executo o evento click do botão pesquisar: https://www3.prefeitura.sp.gov.br/cpom2/Consulta_Tomador.aspx
2º Passo: Aguardo o retorno do site e depois estarei utlizando o Componente HtmlAgilityPack para obter as informações do site e populando uma tabela.
Obs.: Só não estou conseguindo efetuar o primeiro passo.
Ps.: Já achei diversos exemplos "Complexos" aqui no forum, porém, nenhum atendeu minha necessidade.
Muito Obrigado,
Vitor Veloso Systems Programmer Application Services vsveloso@msn.com www.facebook.com/vsveloso www.vsveloso.com.br
Respostas
-
Bom dia!
Hamiltonj,
consegui desenvolver a solução que estava precisando, porem me deparei com um problema que não estou conseguindo solucionar.
Veja se consegue me dar uma luz. Consigui fazer todos os passos, Navegar, Click Pesquisar e Obter Informação da Proxima Página, porem. clicando uma de cada vez... funciona normalmente... Já na mesma função não rola.
Já coloquei Sleep entre elas, Refresh() e nada... Sempre que vou obter a informação do campo ("Nothing"). Só depois que libero a função e o controle e reinderizado é que eu consigo pegar os dados.
Código:
Private Sub tsbAtualizar_Click(sender As System.Object, e As System.EventArgs) Handles tsbAtualizar.Click Dim dlr As DialogResult dlr = MsgBox("Deseja atualizar os dados dos Prestadores de Serviço pelo site da Prefeitura?" & vbCrLf & vbCrLf & "Lembre-se: Somente serão atualizados os CNPJ que estiverem marcados com o flag Executar.", MsgBoxStyle.DefaultButton2 + MsgBoxStyle.YesNo + MsgBoxStyle.Question, "Atualizar Dados") If dlr = Windows.Forms.DialogResult.Yes Then For index = 0 To dgvCadastro.RowCount - 1 'Verifica se o CNPJ precisa ser atualizado If CBool(dgvCadastro.Rows(index).Cells("colAtualizar").Value) Then 'Obtem CNPJ para pesquisa Dim strCNPJ As String = dgvCadastro.Rows(index).Cells("colCNPJ").Value.ToString() 'Efetua a pesquisa da página If fncPaginaPesquisar(strCNPJ) Then 'obtem o valor do campo e popula na Grid dgvCadastro.Rows(0).Cells("colDtCadastroSecretaria").Value = fncGetValue("lblData") End If End If Next End If End Sub Private Function fncPaginaConectar(URL As System.Uri) As Boolean Try web.Navigate(URL) Thread.Sleep(2000) Return True Catch ex As Exception MsgBox("Sem conexão com a internet", MsgBoxStyle.Critical, "Erro na função: fncSetPaginaPrincipal") Return False End Try End Function Private Function fncPaginaPesquisar(CNPJ As String) As Boolean Try web.Document.GetElementById("txt_CNPJ").InnerText = CNPJ web.Document.GetElementById("cmdPesquisar").InvokeMember("click") Return True Catch ex As Exception Return False End Try End Function Private Function fncGetValue(NomeControle As String) As String Try Dim ctrl As HtmlElement ctrl = web.Document.GetElementById(NomeControle) Return ctrl.InnerText Catch ex As Exception Return String.Empty End Try
Obrigado,
Vitor Veloso Systems Programmer Application Services vsveloso@msn.com www.facebook.com/vsveloso www.vsveloso.com.br- Marcado como Resposta Vitor Veloso terça-feira, 17 de janeiro de 2012 16:55
Todas as Respostas
-
Você vai usar a classe HttpWebRequest para tal fim, eis um exemplo:
http://forums.silverlight.net/t/165852.aspx/1
Use o Fiddler para observar o que sendo trafegado na pilha http. Vc também pode usar o fiddler para simular resposta dos sites que vc está tentando usar.
Abs.
HJ- Sugerido como Resposta hamiltonj quinta-feira, 15 de dezembro de 2011 12:02
-
Bom dia!
Hamiltonj,
consegui desenvolver a solução que estava precisando, porem me deparei com um problema que não estou conseguindo solucionar.
Veja se consegue me dar uma luz. Consigui fazer todos os passos, Navegar, Click Pesquisar e Obter Informação da Proxima Página, porem. clicando uma de cada vez... funciona normalmente... Já na mesma função não rola.
Já coloquei Sleep entre elas, Refresh() e nada... Sempre que vou obter a informação do campo ("Nothing"). Só depois que libero a função e o controle e reinderizado é que eu consigo pegar os dados.
Código:
Private Sub tsbAtualizar_Click(sender As System.Object, e As System.EventArgs) Handles tsbAtualizar.Click Dim dlr As DialogResult dlr = MsgBox("Deseja atualizar os dados dos Prestadores de Serviço pelo site da Prefeitura?" & vbCrLf & vbCrLf & "Lembre-se: Somente serão atualizados os CNPJ que estiverem marcados com o flag Executar.", MsgBoxStyle.DefaultButton2 + MsgBoxStyle.YesNo + MsgBoxStyle.Question, "Atualizar Dados") If dlr = Windows.Forms.DialogResult.Yes Then For index = 0 To dgvCadastro.RowCount - 1 'Verifica se o CNPJ precisa ser atualizado If CBool(dgvCadastro.Rows(index).Cells("colAtualizar").Value) Then 'Obtem CNPJ para pesquisa Dim strCNPJ As String = dgvCadastro.Rows(index).Cells("colCNPJ").Value.ToString() 'Efetua a pesquisa da página If fncPaginaPesquisar(strCNPJ) Then 'obtem o valor do campo e popula na Grid dgvCadastro.Rows(0).Cells("colDtCadastroSecretaria").Value = fncGetValue("lblData") End If End If Next End If End Sub Private Function fncPaginaConectar(URL As System.Uri) As Boolean Try web.Navigate(URL) Thread.Sleep(2000) Return True Catch ex As Exception MsgBox("Sem conexão com a internet", MsgBoxStyle.Critical, "Erro na função: fncSetPaginaPrincipal") Return False End Try End Function Private Function fncPaginaPesquisar(CNPJ As String) As Boolean Try web.Document.GetElementById("txt_CNPJ").InnerText = CNPJ web.Document.GetElementById("cmdPesquisar").InvokeMember("click") Return True Catch ex As Exception Return False End Try End Function Private Function fncGetValue(NomeControle As String) As String Try Dim ctrl As HtmlElement ctrl = web.Document.GetElementById(NomeControle) Return ctrl.InnerText Catch ex As Exception Return String.Empty End Try
Obrigado,
Vitor Veloso Systems Programmer Application Services vsveloso@msn.com www.facebook.com/vsveloso www.vsveloso.com.br- Marcado como Resposta Vitor Veloso terça-feira, 17 de janeiro de 2012 16:55
-