C#如何通过WebBrowser自动单击按钮
Posted
技术标签:
【中文标题】C#如何通过WebBrowser自动单击按钮【英文标题】:C# How to Click Button automatically via WebBrowser 【发布时间】:2011-09-08 03:44:38 【问题描述】:我的点击页面的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");
但这没有找到按钮。
【问题讨论】:
看看底部@Ponmalar 的回答 【参考方案1】:这可能会对你有所帮助。
<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");
【讨论】:
【参考方案2】:您是否在等待页面首先加载?您应该在代码中绑定一个函数以等待页面加载,然后单击按钮:
static void form1_Load()
// ...
webBrowser1.onDocumentReady += webBrowser_DocumentReady;
static void webBrowser1_DocumentReady()
webBrowser1.Document.GetElementById("publishButton-ns").InvokeMember("Click");
【讨论】:
【参考方案3】:尝试结合@adam 的建议并大写Click
private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
webBrowser1.Document
.GetElementById("ctl00_main_LoginExpoPlanIt_LoginButton")
.InvokeMember("Click");
刚刚对此进行了测试,它不适用于“点击”,但适用于“点击”:)
我正在使用 .net 4
【讨论】:
它仍然没有找到按钮。错误是“nullreferenceException” mdmullinax,感谢您的意见。在“click”中使用小写字母“c”对我也不起作用,但大写字母“C”确实有效。【参考方案4】:编辑:这仅适用于设置 runat="server"
时,在这种情况下不适用,但留给其他人以防万一,我很抱歉在问题中遗漏了这一点。
ASP.Net 会根据元素所在的结构更改其呈现的元素的名称,您可以尝试以下方法来获取元素的最终名称:
webBrowser1.Document.GetElementById("<%=publishButton-ns.ClientID%>").InvokeMember("click");
【讨论】:
输入元素上没有runat="server",所以ASP.NET引擎不会碰它。【参考方案5】:您可以使用 jQuery,然后执行类似这样的操作 $("#publishButton-ns").click();
http://www.jQuery.com/
【讨论】:
以上是关于C#如何通过WebBrowser自动单击按钮的主要内容,如果未能解决你的问题,请参考以下文章
c#添加webBrowser控件,如何实现自动填写打开的网页中的登录帐号,密码,并且自动登陆?