2010-07-31 69 views
7

我正在构建一个应用程序,它将在WebBrowser控件中打开一个网站,然后在字段中放置一些文本,然后单击几个按钮一个接一个地提交。使用C#和WebBrowser进行网站自动化

看一看代码波纹管......

 
var doc = webBrowser1.Document.GetElementById("ddlOnBoro"); 
doc.SetAttribute("SelectedIndex", "3"); 
var temp = doc.InvokeMember("change"); 

doc = doc.Document.GetElementById("iddOnstreet_txTextBox"); 
doc.SetAttribute("value", "ASTOR PLACE"); 

var adoc = doc.Document.GetElementById("Button6"); 
var getCrossStreets = adoc.DomElement as mshtml.HTMLInputButtonElement; 
adoc.RaiseEvent("onclick"); 

第一次和最后3行的工作很好,即使是中等2个工作正常,但是当我在代码的最后一行的RaiseEvent(“点击”)时,在提交之前,文本框的值会变成空白,即使我已将其设置在第5行代码中。

该网站内置于ASP.NET,我认为这是ViewState搞乱了。

任何想法?

+0

你为什么写这样的应用程序? – 2010-08-16 12:01:23

+0

你有没有考虑过像Watir这样的东西? (http://watir.com/) – Graham 2010-08-16 12:13:17

回答

3

http://watin.org/基于Watir并允许对网站进行单元测试。它也可以用于输入表单数据,从网站上抓取数据等。它非常适合与C#一起使用。请不要将其用于恶意目的。

如果您在IE中的网站上,当您点击按钮时文本框会被清除吗?如果你试图复制你的程序试图手动完成的事情,并且同样的事情不会发生,那么你可能会错过一些东西。 例如,在前三行中,您会调用“更改”事件(我认为它实际上是“onchange”),但您不会在接下来的两行中执行此操作。只是看着它,这是你的代码和手工做的唯一区别。

1

作为参考,请检查受欢迎的iMacros浏览器宏记录器是否可以处理本网站。如果是的话,那么你至少知道它是可行的。

+0

我开始知道字段被重置,因为javascript在那里。这是由JavaScript发布。 – Neutralizer 2011-08-09 18:11:35

2

请参阅以下文章。

它提供了一个关于如何使用WebBrowser自动将搜索文本填入Google的小例子。我会从那开始,然后尝试使用不同的字段名称输入您自己的网站。

C# Auto click button and auto fill form