none
Robô: Passa os parametros e retorna o conteúdo da página RRS feed

  • 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
    terça-feira, 13 de dezembro de 2011 20:14

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
    sexta-feira, 16 de dezembro de 2011 13:32

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
    quarta-feira, 14 de dezembro de 2011 12:16
  • 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
    sexta-feira, 16 de dezembro de 2011 13:32
  • Problema solucionado com um Refresh no componente antes de navegar
    Vitor Veloso Systems Programmer Application Services vsveloso@msn.com www.facebook.com/vsveloso www.vsveloso.com.br
    terça-feira, 17 de janeiro de 2012 16:55