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

本文关键字:按钮 何通过 WebBrowser | 更新日期: 2023-09-27 17:58:18

我的点击页面的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");

但这并没有找到按钮。

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

这可能会对您有所帮助。

<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");  
   }  
 }

您正在等待页面首先加载吗?你应该在代码中绑定一个函数来等待页面加载,他们点击按钮:

static void form1_Load() {
    // ...
    webBrowser1.onDocumentReady += webBrowser_DocumentReady;
}
static void webBrowser1_DocumentReady() {
    webBrowser1.Document.GetElementById("publishButton-ns").InvokeMember("Click");
}

尝试将@adam的建议与Click 大写组合

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

刚刚测试了这个,它不适用于"点击",但适用于"单击":)

我使用的是.net 4

EDIT:这只适用于设置了runat="server"的情况,在这种情况下不适用,但留给其他人以防万一,我很抱歉在问题中遗漏了这一点。

ASP.Net根据元素所在的结构更改其呈现的元素的名称,您可以尝试以下操作来获得元素的最终名称:

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

您可以使用jQuery,然后执行类似$("#publishButton ns")的操作。click();

http://www.jQuery.com/