Domanda

Sto facendo un po 'di lavoro di automazione e posso fare il giro di un sito & amp; pubblicare su moduli HTML va bene, ma ora sono contro una nuova sfida, moduli Ajax .

Dato che non c'è alcuna fonte da leggere, mi chiedo se è possibile compilare un modulo Ajax in modo programmatico, in C #. Attualmente sto usando un axWebBrowser non visibile.

Grazie in anticipo per il tuo aiuto!

È stato utile?

Soluzione

Sì, ma consiglio di utilizzare un approccio diverso per richiedere / rispondere alle pagine del server, comprese le pagine normali e le pagine del gestore AJAX.

In c #, prova a utilizzare o le classi HttpWebRequest / HttpWebResponse più specializzate.

Ajax non è altro che una "fantasia" nome di una tecnologia che consente a Javascript di inviare richieste HTTP a un server che di solito implementa alcuni gestori che producono contenuti specializzati e leggeri per il chiamante Javascript (codificato comunemente come JSON).

Pertanto, al fine di simulare le chiamate AJAX, tutto ciò che dovete fare è ispezionare l'applicazione di destinazione (la pagina Web che si desidera " pubblicare " a) e vedere quale formato viene utilizzato per le comunicazioni AJAX, quindi replicare la pagina Comportamento Javascript da C # usando le classi WebREquest / WebResponse.

Vedi Firebug - un ottimo strumento che ti consente di ispezionare una pagina web per determinare quali chiamate effettua, per quali pagine e quali pagine rispondono. Fa un ottimo lavoro anche nell'ispezione delle chiamate AJAX.

Ecco un esempio molto semplice di come effettuare una richiesta 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 è anche una richiesta, ma con un metodo diverso. Vedi questa pagina per un esempio di come fare un post molto semplice .

MODIFICA - Dettagli sull'ispezione del comportamento della pagina con Firebug

Quello che intendo ispezionando la pagina che stai cercando di replicare è usare uno strumento (io uso Firebug - su Firefox) per determinare il flusso di informazioni tra la pagina e il server.

Con Firebug, puoi farlo utilizzando " Net " e " Console " pannelli. Il pannello Net elenca tutte le richieste eseguite dal browser durante il caricamento della pagina. Mentre la " Console " elencherà le comunicazioni tra la pagina e il server che avvengono dopo il caricamento della pagina. Le comunicazioni che avvengono dopo il caricamento della pagina sono essenzialmente le chiamate AJAX che vorresti replicare (Nota: il monitoraggio della rete deve essere integrato in Firebug affinché funzioni)

Scopri il tutorial di Michael Sync per saperne di più su Firebug e sperimentare con il pannello Console per saperne di più sulle richieste AJAX.

Per quanto riguarda " replica il comportamento della pagina da C # usando WebRequest / WebResponse " - quello che devi capire è che, come ho detto prima, la chiamata Javascript AJAX non è altro che una richiesta HTTP. È una richiesta HTTP che Javacript invia "dietro le quinte", o fuori banda, al server Web. Per replicare questo, non è davvero diverso dal replicare un normale GET o un normale POST come ho mostrato sopra. Ed è qui che entra in gioco Firebug. Usandolo puoi visualizzare le richieste, come le rende Javascript - guarda il pannello Console e guarda come appare il messaggio Richiesta.

Quindi puoi usare la stessa tecnica di cui sopra, usando HttpWebRequest / HttpWebResponse per fare lo stesso tipo di richiesta di Javascript, ma esegui invece solo da C #.

Gregg, spero che questo chiarisca un po 'la mia risposta, ma oltre a ciò suggerisco di giocare con Firebug e forse di imparare di più su come funziona il protocollo HTTP e su come AJAX funziona come tecnologia.

Altri suggerimenti

Hai provato a usare il selenio. AFAIK, puoi scrivere i casi di test in C # e so che i nostri tester lo hanno usato con successo prima di UI Test di un sito ASP.NET abilitato Ajax

http://seleniumhq.org/

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top