2010-11-09 13 views
0

J'ai un client qui utilise un logiciel Web tiers. Sur un écran, mon client remplit un formulaire. Avant de soumettre, il veut lancer quelque chose qui capture ce qu'il a écrit et l'insère dans un csv ou une base de données. La partie CSV ou base de données est facile. Obtenir les données à partir d'un navigateur déjà démarré, s'exécuter sur un autre serveur web est la partie que je ne sais pas comment faire.Comment filtrer les résultats de la mise en forme d'un navigateur Web

Comment puis-je capturer le contenu du formulaire html? Je préférerais utiliser C#, vb.net, vbs ou similaire mais je suis vraiment intéressé par quoi que ce soit. Je préférerais également ne pas installer de logiciel personnalisé sur le poste de travail client, sauf quel logiciel de grattage d'écran que j'écris ici. Je préférerais aussi que l'utilisateur remplisse le formulaire et exécute mon script pour rassembler les données plutôt que de devoir exécuter une instance de navigateur personnalisée.

Merci!

+0

Vous éliminez toutes les solutions évidentes. Greasemonkey est le suivant. –

Répondre

0

J'ai décidé d'utiliser javascript et d'ajouter un favori IE ou un marque-page firefox pour cela. Il récupère les données du formulaire et envoie les données à une page ASPX à partir de la chaîne de requête. La page ASPX écrit ensuite les données dans la base de données et affiche un graphique contextuel si l'écriture a réussi ou non.

Voici un échantillon du script:

javascript:var oForm = document.forms[0];var name = oForm.elements["name"].value; void window.open("http://www.mydomain.com/page.aspx?data=" + name ,"_blank","resizable,height=130,width=130"); 

Tout le monde, merci pour les suggestions !!

1

Avant que l'utilisateur ne soumette le formulaire, les données n'existent que dans le navigateur. Le navigateur est le seul endroit où vous pourrez obtenir les données.

Vous aurez besoin de quelque chose comme un objet d'aide du navigateur ou l'équivalent dans FireFox. Vous devrez également restreindre les navigateurs qui peuvent être utilisés, et vous devrez maintenir cet outil d'aide.

Vous ferez mieux de dire non au client, ou de trouver une meilleure façon de faire ce qu'il veut vraiment (par exemple, l'application tierce doit peut-être pouvoir enregistrer ce qui lui est envoyé).

1

Si vous ou votre client ne vous dérange pas d'utiliser une application Windows Forms, vous pouvez ajouter un contrôle WebBrowser, puis le diriger vers l'application Web tierce. Ensuite, vous pouvez essayer d'accéder aux éléments de la page Web (par exemple, les champs de formulaire) via la propriété .Document du contrôle. Bien que je ne sois pas sûr si vous pouvez accéder à des valeurs de champ de formulaire spécifiques ou non.

Modifier
J'ai été en mesure de le faire avec ce que j'ai dit. J'ai créé une application de formulaires de fenêtres, ajouté un contrôle WebBrowser (webBrowser1), puis chargé ce code HTML dans (avec une bonne < html>, < head> balises et similaires):

<form id="form1" method="post" action="test.htm"> 
    <input type="text" id="testText" name="testText" /> 
    <br /> 
    <input type="submit" value="Save" /> 
</form>

Note: Je l'ai fait par l'enregistrer dans un fichier html et en utilisant webBrowser1.Url = new Uri(@"c:\test.htm"); dans mon événement .

j'étais alors en mesure d'accéder à tout ce que je tapais dans testText en faisant ceci:

HtmlDocument doc = webBrowser1.Document; //Gets the html document 
HtmlElement elem = doc.Body.All["testText"]; //Gets the input element 
MessageBox.Show(elem.GetAttribute("value")); //Gets the value attribute

J'espère que cela vous aide.