Question

Je fais un peu d’automatisation et je peux me déplacer dans un site & amp; publier des formulaires HTML bien, mais je suis maintenant confronté à un nouveau défi: les formulaires Ajax .

Puisqu'il n'y a pas de source à lire, je me demande s'il est possible de remplir un formulaire Ajax par programme, en C #. J'utilise actuellement un axWebBrowser non visible.

Merci d'avance pour votre aide!

Était-ce utile?

La solution

Oui, mais je vous recommande d'utiliser une approche différente pour demander / répondre aux pages du serveur, y compris les pages normales et les pages du gestionnaire AJAX.

En c #, essayez d'utiliser le

Par conséquent, pour simuler des appels AJAX, il vous suffit d'inspecter votre application cible (la page Web sur laquelle vous souhaitez "publier") et de voir le format utilisé pour les communications AJAX - puis de répliquer le contenu de la page. Comportement Javascript de C # en utilisant les classes WebREquest / WebResponse.

Voir Firebug - un excellent outil qui vous permet d'inspecter une page Web pour déterminer ses appels, quelles pages et ce que ces pages répondent. Il fait également un très bon travail lors de l'inspection d'appels AJAX.

Voici un exemple très simple de la procédure à suivre pour effectuer une requête 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 est aussi une requête, mais avec une méthode différente. Voir cette page pour obtenir un exemple de rédaction d'un message très simple. .

MODIFIER : informations détaillées sur le comportement de la page avec Firebug

.

Ce que je veux dire en inspectant la page que vous essayez de répliquer, est d'utiliser un outil (j'utilise Firebug - sur Firefox) pour déterminer le flux d'informations entre la page et le serveur.

Avec Firebug, vous pouvez le faire en utilisant le bouton "Net". et " Console " panneaux. Le panneau Réseau répertorie toutes les demandes exécutées par le navigateur lors du chargement de la page. Alors que le " Console " liste les communications entre la page et le serveur qui ont lieu après le chargement de la page. Les communications qui ont lieu après le chargement de la page sont essentiellement les appels AJAX que vous souhaitez répliquer (Remarque: la surveillance du réseau doit être activée dans Firebug pour que cela fonctionne)

Consultez le didacticiel de Michael Sync pour en savoir plus sur Firebug et faites des essais avec le panneau de la console pour en savoir plus. sur les requêtes AJAX.

À propos de "répliquez le comportement de la page à partir de C # à l'aide de WebRequest / WebResponse". - Ce que vous devez comprendre, c'est que, comme je l'ai dit plus tôt, l'appel Javascript AJAX n'est rien de plus qu'une requête HTTP. C’est une demande HTTP que le Javacript envoie au serveur Web "en coulisse" ou hors bande. Pour répliquer cela, ce n'est pas vraiment différent de répliquer un GET normal ou un POST normal comme je l'ai montré ci-dessus. Et c’est là que Firebug entre en jeu. En l'utilisant, vous pouvez visualiser les requêtes, comme le fait Javascript, en consultant le panneau de la console et voir à quoi ressemble le message Request.

Ensuite, vous pouvez utiliser la même technique que ci-dessus, en utilisant HttpWebRequest / HttpWebResponse pour effectuer le même type de demande que le fait Javascript, mais uniquement à partir de C #.

Gregg, j'espère que cela clarifie un peu ma réponse, mais au-delà de cela, je suggère de jouer avec Firebug et peut-être en apprendre davantage sur le fonctionnement du protocole HTTP et sur le fonctionnement de la technologie AJAX.

Autres conseils

Avez-vous envisagé d'utiliser Selenium? Autant que je sache, vous pouvez écrire les scénarios de test en C # et je sais que nos testeurs l’ont déjà utilisé avec succès pour tester l’interface utilisateur. Tester un site ASP.NET compatible Ajax

http://seleniumhq.org/

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top