2012-02-13 93 views
2

我开发C#的桌面程序做一些自动发布按在WebBrowser控件提交按钮

  1. 我在C#中WebBrowser控件打开网页(与形式)
  2. 一旦打开网页,我正在填写表单字段的数据(使用C#代码)。所以没有人工交互

我的问题是:我如何自动发送数据到服务器(换句话说,我怎么按下提交按钮使用C#代码)?

+0

如果这是用于Web UI测试,那么你应该指定,否则我可以看到你被轰炸“你应该使用HttpWebRequest”。 – James 2012-02-13 13:09:30

+0

是的,这是为我的PHP应用程序的UI测试工作 – 2012-02-13 13:23:12

回答

0

看看WatiN。但我个人会使用WebClientHttpWebRequest从/到服务器获取/张贴数据

+0

感谢您的快速回复。我正在寻找一些与C#web浏览器控制的工作示例 – 2012-02-13 13:16:04

1

基本上使用相同的代码来定位和填充字段,您可以遍历DOM以查找提交按钮并通过点击发送调用。

theElementCollection = WebBrowser1.Document.GetElementsByTagName("input"); 
    foreach (HtmlElement curElement in theElementCollection) { 
     if (curElement.GetAttribute("id").Equals("login_button")) { 
      curElement.InvokeMember("click"); 
+0

我试过这种编码。但它对我来说效果并不好 – 2012-02-13 13:17:39

+0

只是好奇 - 你是否尝试了一下,以确保它获得了元素?我已经写了一些这些程序,并且必须实施一些解决方法。 – kpcrash 2012-02-13 14:00:18

+0

是的,我试过了。但它没有提交表格 – 2012-02-26 10:22:43

0

如果你想提交你检查这一种形式,

// get the document 
mshtml.IHTMLDocument2 doc = ((mshtml.HTMLDocumentClass)webBrowser1.Document); 

// set a variable 
((mshtml.IHTMLElement)doc.all.item("q")).setAttribute("value", "my input..."); 

// click a button 
((mshtml.HTMLInputElement)doc.all.item("btnI")).click(); 

命名空间mshtml位于Microsoft.mshtml大会。

只需添加对Microsoft.mshtml的引用即可。