C#如何通过WebBrowser自动单击按钮

时间:2011-06-03 22:08:28

标签: c# button browser submit

点击页面的Html代码为:

<input type="submit" id="publishButton-ns" class="ubtn ubtn-block"
 name="publish" tabindex="10" value="Publish Post">

我尝试使用此代码点击:

webBrowser1.Document.GetElementById("publishButton-ns").InvokeMember("click");

但是没找到按钮。

5 个答案:

答案 0 :(得分:25)

这可能会对你有帮助。

<input type="submit" value="Submit" />

HtmlElementCollection elc = this.webBrowser1.Document.GetElementsByTagName("input");  
foreach (HtmlElement el in elc)  
{  
   if (el.GetAttribute("type").Equals("submit"))  
   {  
        el.InvokeMember("Click");  
   }  
 }

答案 1 :(得分:5)

您是否在等待首页加载?您应该在代码中绑定一个函数以等待页面加载,然后单击按钮:

static void form1_Load() {
    // ...
    webBrowser1.onDocumentReady += webBrowser_DocumentReady;
}

static void webBrowser1_DocumentReady() {
    webBrowser1.Document.GetElementById("publishButton-ns").InvokeMember("Click");
}

答案 2 :(得分:2)

尝试结合使用@adam的建议并将Click

大写
private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
    webBrowser1.Document
        .GetElementById("ctl00_main_LoginExpoPlanIt_LoginButton")
        .InvokeMember("Click");
}

刚测试了这个并且它不适用于“点击”但是使用“点击”:)

我正在使用.net 4

答案 3 :(得分:0)

编辑:这仅适用于设置runat="server"的情况,在这种情况下不适用,但为了以防其他情况,请原谅我在问题中遗漏了这一点。

ASP.Net根据它们所在的结构更改它所呈现的元素的名称,您可以尝试以下方法来获取该元素的最终名称:

webBrowser1.Document.GetElementById("<%=publishButton-ns.ClientID%>").InvokeMember("click");

答案 4 :(得分:-1)

您可以使用jQuery然后执行类似$(“#publishButton-ns”)的操作。单击();

http://www.jQuery.com/