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

前三行和后三行都很好,甚至中间的两行也能正常工作,但是当我在代码的最后一行中RaiseEvent(“onclick”)时,即使我已经在代码的第5行中设置了文本框的值,它也会在提交之前变为空白。

该网站内置于ASP.NET中,我认为这是ViewState所困扰。

有任何想法吗?

最佳答案

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

如果您在IE中的网站上,则单击按钮时文本框会清除吗?如果您尝试手动复制程序要执行的操作,但未发生相同的事情,则可能会丢失某些内容。 例如,在前三行中,您调用了“change”事件(我认为这实际上是“onchange”),但是在接下来的两行中则不这样做。 只是看一下,这就是您的代码和手工完成代码之间的唯一区别。

09-20 07:07