Frage

Ich bin etwas Automatisierung der Arbeit zu tun und kann meine Art und Weise um eine Website und Post zu HTML-Formularen in Ordnung, aber jetzt bin ich gegen eine neue Herausforderung, Ajax Formen.

Da es keine Quelle ist zu lesen, ich frage mich, links, wenn es möglich ist, in einem Ajax-Formular ausfüllen progamatically, in C #. Ich bin derzeit ein nicht sichtbaren axWebBrowser verwendet wird.

Vielen Dank im Voraus für Ihre Hilfe!

War es hilfreich?

Lösung

Ja, aber ich empfehlen, einen anderen Ansatz zur anfordernden / Reaktion auf die Serverseiten einschließlich der regelmäßigen Seiten, und die AJAX-Handler-Seiten.

In c #, versuchen Sie die WebRequest / WebResponse oder die speziellere HttpWebRequest / HttpWebResponse Klassen.

Ajax ist nicht mehr als ein „fancy“ Name für eine Technologie, die Javascript ermöglicht HTTP-Anfragen an einen Server zu machen, die in der Regel einige Handler implementiert, die speziellen, leichtgewichtige Inhalte für die Javascript Anrufer erzeugen (comonly als JSON codieren).

Deshalb zu simulieren, um AJAX-Aufrufe, alles, was Sie tun müssen, ist Ihre Zielanwendung zu überprüfen (die Web-Seite, die Sie „post“ zu wollen) und sehen, welches Format für die AJAX-Kommunikation verwendet wird - dann ist die Javascript-Seite replizieren Verhalten von C # WebRequest / WebResponse Klassen verwenden.

Siehe Firebug - ein großes Werkzeug, das Ihnen eine Web-Seite überprüfen kann, um zu bestimmen, was es nennt macht, zu die Seiten und was diese Seiten zu antworten. Es hat einen ziemlich guten Job bei Inspektion von AJAX-Aufrufen zu.

Hier ist ein sehr einfaches Beispiel, wie eine Web-Anfrage zu tun:

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
   }
}    

Ein POST ist auch ein Wunsch, aber mit einer anderen Methode. Siehe dieser Seite für ein Beispiel, wie eine sehr einfache Post zu tun .

Bearbeiten - Details auf Inspizieren das Seite Verhalten mit Firebug

Was ich meine, indem Sie die Seite Inspizieren Sie replizieren möchten, ist ein Werkzeug zu verwenden (ich benutze Firebug - auf Firefox). Den Informationsfluss zwischen der Seite und dem Server zu ermitteln

Mit Firebug können Sie dies tun, indem Sie den „Net“ und „Console“ Platten verwendet wird. Die Net-Panel listet alle vom Browser ausgeführt Anfragen, während die Seite geladen wird. Während der „Console“ listet die Kommunikation zwischen der Seite und dem Server, die stattfinden, nachdem die Seite geladen wird. Diese Kommunikation, die stattfinden, nachdem die Seite geladen wurde sind im Wesentlichen die AJAX-Aufrufe, die Sie replizieren möchten (Hinweis: Netzwerküberwachung enbled hierfür in Firebug werden muss arbeiten)

Schauen Sie sich Michael Sync Tutorial mehr über Firebug und experimentieren Sie mit der Konsole Panel, um mehr zu erfahren über die AJAX-Anforderungen.

In Bezug auf „replizieren das Verhalten der Seite von C # mit der WebRequest / WebResponse“ - was Sie wissen müssen, ist, dass, wie ich bereits sagte, die Javascript AJAX-Aufruf nicht mehr als eine HTTP-Anforderung ist. Es ist eine HTTP-Anforderung, die Javacript „hinter den Kulissen“, oder Out-of-Band, auf den Web-Server macht. So replizieren diese, ist es wirklich nicht anders als ein normales GET replizieren oder eine normale POST, wie ich oben zeigte. Und das ist, wo Firebug zum Spielen kommen. Mit ihm können Sie die Anfragen sehen, wie die Javascript sie macht - Blick auf die Konsole Panel, und sehen, was die Request-Nachricht aussieht.

Dann können Sie die gleiche Technik wie oben verwenden, den HttpWebRequest / HttpWebResponse mit der gleichen Art von Anfrage zu machen, wie das Javascript tut, tun Sie es nur aus C # statt.

Gregg, Ich hoffe, das klärt meine Antwort ein wenig aber darüber hinaus ich mit Firebug schlagen zu spielen und vielleicht auch mehr zu lernen, wie das HTTP-Protokoll funktioniert und wie AJAX arbeitet als Technologie.

Andere Tipps

Haben Sie bei Verwendung von Selen aussehen. AFAIK, können Sie die Testfälle in C # schreiben, und ich weiß, dass unsere Tester es erfolgreich vor dem UI-Test verwendet eine Ajax ASP.NET-Website aktiviert

http://seleniumhq.org/

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top