none
Windows Form ou informando dados em um browser RRS feed

  • Pergunta

  • Queria montar uma aplicação seja windows form ou até mesmo um console, onde eu por exemplo, acessasse um site definido por mim, e pudesse preencher os campos na tela(neste caso saberia o nome de cada imputbox) e dar um post neste site, podendo assim ver tratar os resultados.

    Exemplo:

    via windows form eu acessaria o site da google, e preenchesse a opção pesquisa e efetuasse um post neste site, buscando os resultados.

    Como faria isso?


    Marquinhos Não esqueça de qualificar a resposta.

    quinta-feira, 2 de agosto de 2012 19:46

Respostas

  • Eu criei um website que tem um form de login (frmlogin.aspx)

    asp:text id ="txtusuario"

    asp:text id ="txtSenha"

    asp:button id="cmdLogar"

    Olá Marquinhos,

    Você pode enviar requisições HTTP via POST utilizando HttpRequest ou WebClient, por exemplo... Basta pesquisar por "C# HttpRequest POST" e vai encontrar algumas dezenas de artigos e tópicos em fóruns com exemplos. Qual é a sua dificuldade?

    De qualquer forma, se o seu objetivo é simular um navegador, fazer as requisições manualmente e depois fazer o parse do HTML para encontrar os controles vai dar muito trabalho... Vale mais a pena utilizar um framework já existente como o SimpleBrowser, WatiN ou Selenium, por exemplo.

    Com o SimpleBrowser é provavelmente o mais simples... Basta instalar (via NuGet), e usar a classe Browser para simular a navegação:

    using SimpleBrowser;
    // ...
    
    var browser = new Browser();
    
    // Vamos fingir que estamos usando o Safari
    browser.UserAgent = "Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.10 (KHTML, like Gecko) Chrome/8.0.552.224 Safari/534.10";
    
    // Faz um GET na página
    browser.Navigate("https://site.com/frmlogin.aspx");
    
    // Simula o preenchimento dos campos
    browser.Find("txtusuario").Value = "Caio Proiete";
    browser.Find("txtsenha").Value = "123456";
    
    // Envia os dados via POST
    var result = browser.Find("cmdlogar").Click();
    
    // Escreve o HTML recebido após o POST num arquivo em disco (só para ver)
    System.IO.File.WriteAllText(@"C:\Resultado.html", browser.CurrentHtml);
    

    Abraços,
    Caio Proiete

     


    Caio Proiete
    Microsoft MVP, MCT, MCPD, MCTS, MCSD
    http://caioproiete.net
    quinta-feira, 9 de agosto de 2012 13:03
    Moderador
  • Caio,

    obrigadão aqui vc me deu o caminho das pedras.

    Valeu mesmo


    Marquinhos Não esqueça de qualificar a resposta.

    quinta-feira, 9 de agosto de 2012 18:44

Todas as Respostas

  • Marquinhos, veja se isto lhe resolve

    http://stackoverflow.com/questions/5227567/web-automation-using-net


    Olavo Oliveira Neto
    http://olavooneto.wordpress.com
    Twitter @Olavooneto
    Facebook Olavo Neto
    Linkedin Olavo Neto
    Se for útil marque como resposta e faça um Developer feliz :)

    sexta-feira, 3 de agosto de 2012 12:02
    Moderador
  • Este não resolve Olavo, pois estou tentando buscar via webrequest e webresponse

    imagina o seguinte:

    Eu criei um website que tem um form de login (frmlogin.aspx)

    tenho os

    asp:text id ="txtusuario"

    asp:text id ="txtSenha"

    asp:button id="cmdLogar"

    eu quero através de uma aplicação por exemplo console application, acessar este site, preencher os campos txtusuario, txtsenha e enviar um post para para que seja executado o cmdlogar.

    sacou?


    Marquinhos Não esqueça de qualificar a resposta.

    sexta-feira, 3 de agosto de 2012 18:27
  • Precisa ser deste jeito mesmo? não da para usar um Web Service que execute o mesmo procedimento por exemplo ????


    Se a resposta ajudou não esqueça de qualificar.

    terça-feira, 7 de agosto de 2012 16:40
  • Pois é, não tem como eu utilizar um webservice.

    vc saberia como fazer isso?


    Marquinhos Não esqueça de qualificar a resposta.

    quinta-feira, 9 de agosto de 2012 10:52
  • Eu criei um website que tem um form de login (frmlogin.aspx)

    asp:text id ="txtusuario"

    asp:text id ="txtSenha"

    asp:button id="cmdLogar"

    Olá Marquinhos,

    Você pode enviar requisições HTTP via POST utilizando HttpRequest ou WebClient, por exemplo... Basta pesquisar por "C# HttpRequest POST" e vai encontrar algumas dezenas de artigos e tópicos em fóruns com exemplos. Qual é a sua dificuldade?

    De qualquer forma, se o seu objetivo é simular um navegador, fazer as requisições manualmente e depois fazer o parse do HTML para encontrar os controles vai dar muito trabalho... Vale mais a pena utilizar um framework já existente como o SimpleBrowser, WatiN ou Selenium, por exemplo.

    Com o SimpleBrowser é provavelmente o mais simples... Basta instalar (via NuGet), e usar a classe Browser para simular a navegação:

    using SimpleBrowser;
    // ...
    
    var browser = new Browser();
    
    // Vamos fingir que estamos usando o Safari
    browser.UserAgent = "Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.10 (KHTML, like Gecko) Chrome/8.0.552.224 Safari/534.10";
    
    // Faz um GET na página
    browser.Navigate("https://site.com/frmlogin.aspx");
    
    // Simula o preenchimento dos campos
    browser.Find("txtusuario").Value = "Caio Proiete";
    browser.Find("txtsenha").Value = "123456";
    
    // Envia os dados via POST
    var result = browser.Find("cmdlogar").Click();
    
    // Escreve o HTML recebido após o POST num arquivo em disco (só para ver)
    System.IO.File.WriteAllText(@"C:\Resultado.html", browser.CurrentHtml);
    

    Abraços,
    Caio Proiete

     


    Caio Proiete
    Microsoft MVP, MCT, MCPD, MCTS, MCSD
    http://caioproiete.net
    quinta-feira, 9 de agosto de 2012 13:03
    Moderador
  • Caio,

    obrigadão aqui vc me deu o caminho das pedras.

    Valeu mesmo


    Marquinhos Não esqueça de qualificar a resposta.

    quinta-feira, 9 de agosto de 2012 18:44