2009-11-16 6 views
0

À des fins d'apprentissage, je voudrais automatiser certaines parties dans un jeu par navigateur, actuellement j'essaie de remplir quelques zones de texte simples, sans la moindre chance. J'ai créé un composant WebBrowser sur mon formulaire, chargé le site Web via celui-ci et essayé cela.Navigateur Web automatisé?

webBrowser1.Document.GetElementById("citizen_name").SetAttribute("", "myname"); 

Lorsque je clique sur le bouton "Remplir la zone de texte", rien ne se passe. La partie HTML ressemble à ceci:

<input type="text" name="citizen_name" id="citizen_name" value="" class="field" tabindex="1" /> 

Je parle du jeu eRepublik.com, j'apprécie toute aide.

+5

l'agriculture d'or, hein? –

+1

(de toute façon, vous devriez probablement essayer .SetAttribute ("valeur", "myname") à la place) –

Répondre

5

Essayez ceci:

HtmlDocument document = this.webBrowser1.Document; 
document.GetElementById("citizen_name").SetAttribute("value", "myname"); 
0

Pour ce genre de problèmes, il y a des environnements beaucoup plus appropriés.

Le plus simple à utiliser est certainement les scripts utilisateurs.

Que voulez-vous apprendre exactement? Comment tester des applications web, ou comment les développer?

0

Vous pouvez bien sûr utiliser le javascript simple que vous incluez dans votre page, ou mieux encore, en utilisant Greasemonkeyhttp://youngpup.net/z_dropbox/greasespot_favicon.ico, donc vous ne modifiez pas le code "client".

Mais greasemonkey ne serait qu'une option pour Firefox, Opera et Chrome. Si vous avez vraiment besoin d'une suite de tests d'automatisation cross browser complète, vous pouvez utiliser Selenium IDEhttp://seleniumhq.org/selenium-favicon.ico, qui permet d'enregistrer ou de scripter une série d'interactions avec une page Web, qui peut être automatiquement exécutée dans l'un de ses supported browsers.

2

je prends habituellement l'approche suivante:

var someElem = webBrowser1.Document.GetElementById("some_id"); 
if (someElem != null) 
{ 
    someElem.InnerText = "Some value"; 
} 

Certains textareas des éditeurs avancés ne peuvent pas avoir leur valeur réglée de cette façon. Pour les gérer, je fais quelque chose comme ce qui suit:

someElem.Focus(); 
Windows.Forms.SendKeys.SendWait("Some value");