我正在构建一个应用程序,它在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。
有什么想法吗?
答案 0 :(得分:3)
http://watin.org/基于Watir,允许对网站进行单元测试。它还可用于输入表单数据,从网站上抓取数据等。它非常适合与C#一起使用。请不要将其用于恶意目的。
如果您在IE网站上,单击按钮时文本框是否会清除?如果你试图复制你的程序试图手工做的事情,同样的事情不会发生,那么你可能会遗漏一些东西。 例如,在前三行中,您调用“更改”事件(我认为它实际上是“onchange”),但您不会在接下来的两行中执行此操作。只需查看它,这是你的代码和手工操作之间的唯一区别。
答案 1 :(得分:2)
请参阅以下文章。
它提供了一个关于如何使用WebBrowser自动将搜索文本填入Google的小例子。我会从那开始,然后尝试使用不同的字段名称输入您自己的网站。
答案 2 :(得分:1)
作为参考,检查流行的iMacros浏览器宏录制器是否可以处理此网站。如果是,那么你至少知道它是可行的。