Pregunta

Estoy realizando algunos trabajos de automatización y puedo navegar por un sitio & amp; publicar en formularios HTML, está bien, pero ahora me enfrento a un nuevo desafío, Ajax formularios.

Ya que no hay una fuente para leer, me pregunto si es posible rellenar un formulario Ajax de forma progamática, en C #. Actualmente estoy usando un axWebBrowser no visible.

¡Gracias de antemano por tu ayuda!

¿Fue útil?

Solución

Sí, pero recomiendo utilizar un enfoque diferente para solicitar / responder a las páginas del servidor, incluidas las páginas normales y las páginas del controlador AJAX.

En c #, intente usar Firebug : una gran herramienta que le permite inspeccionar una página web para determinar qué llamadas realiza, para Qué páginas y qué responden esas páginas. También hace un buen trabajo en la inspección de llamadas AJAX.

Este es un ejemplo muy simple de cómo hacer una solicitud 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
   }
}    

Un POST también es una solicitud, pero con un método diferente. Vea esta página para ver un ejemplo de cómo hacer una publicación muy simple .

EDIT : detalles sobre cómo inspeccionar el comportamiento de la página con Firebug

Lo que quiero decir al inspeccionar la página que intentas replicar es usar una herramienta (yo uso Firebug - en Firefox) para determinar el flujo de información entre la página y el servidor.

Con Firebug, puedes hacer esto usando el " Net " y " Consola " los paneles El panel de Red enumera todas las solicitudes ejecutadas por el navegador mientras se carga la página. Mientras que la " Consola " listará las comunicaciones entre la página y el servidor que tendrán lugar después de que la página se haya cargado. Las comunicaciones que tienen lugar después de que la página se haya cargado son esencialmente las llamadas AJAX que querrá replicar (Nota: la supervisión de la red debe habilitarse en Firebug para que esto funcione)

Consulte tutorial de Michael Sync para obtener más información sobre Firebug y experimente con el panel de la Consola para obtener más información sobre las solicitudes de AJAX.

Respecto a " replicar el comportamiento de la página desde C # usando WebRequest / WebResponse " - Lo que hay que tener en cuenta es que, como dije anteriormente, la llamada AJAX de Javascript no es más que una solicitud HTTP. Es una solicitud HTTP que el Javacript realiza "detrás de escena" o fuera de banda, al servidor web. Para replicar esto, realmente no es diferente de replicar un GET normal o un POST normal como lo mostré anteriormente. Y aquí es donde entra Firebug a jugar. Al usarlo, puede ver las solicitudes, como las hace Javascript. Mire el panel de la consola y vea cómo se ve el mensaje de solicitud.

Luego, puede usar la misma técnica que la anterior, usando HttpWebRequest / HttpWebResponse para realizar el mismo tipo de solicitud que Javascript, solo hágalo desde C #.

Gregg, espero que esto aclare un poco mi respuesta, pero más allá de esto sugiero jugar con Firebug y quizás aprender más sobre cómo funciona el protocolo HTTP y cómo funciona AJAX como tecnología.

Otros consejos

Has mirado usando selenio. AFAIK, puede escribir los casos de prueba en C # y sé que nuestros evaluadores lo han utilizado con éxito antes para probar la interfaz de usuario en un sitio ASP.NET habilitado para Ajax

http://seleniumhq.org/

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top