2009-11-16 150 views
0

为了学习的目的,我想在浏览器游戏中自动化一些部分,目前我正在尝试填写一些简单的文本框,但没有任何运气。我在表单上创建了一个WebBrowser组件,并通过它加载了网站并试用了这个组件。自动网络浏览器?

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

当我点击我的“填写文本框”按钮时,什么也没有发生。 HTML部分看起来像这样:

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

我说的是eRepublik.com游戏,非常感谢任何帮助。

+5

黄金养殖,呃? – 2009-11-16 01:42:13

+1

(不管怎样,你可能应该试试.SetAttribute(“value”,“myname”)) – 2009-11-16 01:43:38

回答

5

试试这个:

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

对于这类问题有更适合的环境。

最容易使用的绝对是userscripts。

你究竟想学什么?如何测试网络应用程序,或如何开发它们?

0

你可以使用当然简单的JavaScript,你包括在你的页面,或更好的是,使用Greasemonkeyhttp://youngpup.net/z_dropbox/greasespot_favicon.ico,所以你不修改“客户端”的代码。

但greasemonkey只会是Firefox,Opera和Chrome的一个选项。如果你真的需要一个完整的跨浏览器自动化测试套件,你可以使用Selenium IDEhttp://seleniumhq.org/selenium-favicon.ico,它允许记录或脚本与网页的一系列交互,可以在其任何supported browsers自动运行。

2

我通常采取如下方法:

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

的高级编辑人员提供了一些文字区域不能有自己的价值这样设置的。为了处理它们,我做了类似以下的事情:

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