Pergunta

Eu estou fazendo algum trabalho de automação e pode fazer o meu caminho em torno de um site e post para HTML faz bem, mas agora estou diante de um novo desafio, Ajax formas.

Uma vez que não há nenhuma fonte de ler, eu estou deixado querer saber se é possível preencher um formulário de Ajax progamatically, em C #. Atualmente estou usando um axWebBrowser não-visível.

Agradecemos antecipadamente por sua ajuda!

Foi útil?

Solução

Sim, mas eu recomendo usar uma abordagem diferente para pedir / responder às páginas do servidor, incluindo as páginas regulares e as páginas de manipulador AJAX.

Em c #, tente usar o WebRequest / WebResponse ou mais especializada HttpWebRequest / HttpWebResponse classes.

Ajax não mais do que um nome de "fantasia" é uma tecnologia que permite que o Javascript para fazer solicitações HTTP para um servidor que geralmente implementa alguns manipuladores que produzem especializadas, conteúdo leve para o chamador Javascript (comonly codificados como JSON).

Portanto, a fim de chamadas AJAX simulados, tudo que você tem a fazer é inspecionar seu aplicativo de destino (a página web que deseja "post" a) e ver o formato é usado para as comunicações de AJAX - então replicar Javascript da página comportamento de C # usando as classes WebRequest / WebResponse.

Firebug - uma grande ferramenta que permite-lhe inspeccionar uma página web para determinar o que chama faz, para quais as páginas e o que essas páginas responder. Ele faz um trabalho muito bom em inspecionar chamadas AJAX também.

Aqui está um exemplo muito simples de como fazer uma solicitação da web:

HttpWebRequest wReq = (HttpWebRequest)WebRequest.Create("http://www.mysite.com");

using (HttpWebResponse resp = (HttpWebResponse)wReq.GetResponse())
{
   // NOTE: A better approach would be to use the encoding returned by the server in
   // the Response headers (I'm using UTF 8 for brevity)
   using (StreamReader sr = new StreamReader(resp.GetResponseStream(), Encoding.UTF8))
   {
       string content = sr.ReadToEnd();
       // Do something with the content
   }
}    

A POST também é um pedido, mas com um método diferente. Consulte desta página para um exemplo de como fazer um post muito simples .

Editar - Details em inspecionar o comportamento página com Firebug

O que quero dizer inspecionando a página que você está tentando replicar é a utilização de uma ferramenta (eu uso o Firebug - no Firefox). Para determinar o fluxo de informações entre a página eo servidor

Com o Firebug, você pode fazer isso usando o "Net" e os painéis "console". O painel Net lista todas as solicitações executadas pelo navegador ao carregar a página. Enquanto o "Console" irá listar as comunicações entre a página eo servidor que ocorrem após a página foi carregada. Essas comunicações que ocorrem após a página ter sido carregada são essencialmente as chamadas AJAX que você deseja replicar (Nota: monitoramento de rede tem de ser enbled no Firebug para este ao trabalho)

Confira de Michael sincronização tutorial para saber mais sobre Firebug e experiência com o painel de consola para aprender mais sobre as solicitações de AJAX.

No que diz respeito "replicar o comportamento da página de C # usando o WebRequest / WebResponse" - o que você tem que perceber é que, como eu disse anteriormente, a chamada Javascript AJAX é nada mais do que uma solicitação HTTP. É uma solicitação HTTP que o Javacript faz "nos bastidores", ou out-of-band, para o servidor web. Para replicar isso, é realmente diferente do que replicar um GET normal ou um POST normal como eu mostrei acima. E é aí que Firebug vem para jogar. Através dela você pode ver os pedidos, como o Javascript torna - olhar para o painel do console, e ver o que a solicitação de mensagem parece com.

Em seguida, você pode usar a mesma técnica acima, usando o HttpWebRequest / HttpWebResponse para fazer o mesmo tipo de pedido como o Javascript faz, fazê-lo apenas a partir de C # vez.

Gregg, eu espero que isso esclarece a minha resposta um pouco, mas além deste Sugiro brincar com Firebug e talvez aprender mais sobre como as obras e protocolo HTTP como AJAX funciona como uma tecnologia.

Outras dicas

Você já olhou usando Selenium. AFAIK, você pode escrever os casos de teste em C # e eu sei que nossos testadores tê-lo usado com êxito antes de UI Teste uma Ajax habilitado local ASP.NET

http://seleniumhq.org/

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top