使用C#和WebBrowser进行网站自动化

时间:2010-07-31 14:09:23

标签: c# browser

我正在构建一个应用程序,它在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");

第一行和后三行工作正常,甚至中间2工作正常,但是当我在最后一行代码中使用RaiseEvent(“onclick”)时,即使我已将其设置为第5行,textbox的值在提交之前也会变为空白代码

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

有什么想法吗?

3 个答案:

答案 0 :(得分:3)

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

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

答案 1 :(得分:2)

请参阅以下文章。

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

C# Auto click button and auto fill form

答案 2 :(得分:1)

作为参考,检查流行的iMacros浏览器宏录制器是否可以处理此网站。如果是,那么你至少知道它是可行的。