WebBrowser控件 – 获取元素按类型?

我需要在C#中按类型获取元素,HTML看起来像这样:

 

我希望它能够在我可以调用它(“点击”)的地方,但它似乎不适合在C#中工作。 我目前的代码是:

 HtmlElement m_SubmitField = m_Browser.Document.All["orangeBtn"]; if (m_SubmitField != null) m_SubmitField.InvokeMember("click"); 

有没有其他工作方式来做到这一点?

这不是我的服务器,因此我无法编辑HTML或添加jquery。

我正在制作一个自动应用程序来向我想要加入的朋友发送邀请,但他们创建的按钮没有上面看到的ID或名称,所以无论如何都要在C#中使用不同的方式调用(“点击”)方法?

谢谢。

您可以使用GetElementsByTagName

 var elements = m_Browser.Document.GetElementsByTagName("button"); foreach (HtmlElement element in elements) { // If there's more than one button, you can check the //element.InnerHTML to see if it's the one you want if (element.InnerHTML.Contains("Send Invitations")) { element.InvokeMember("click"); } } 

我尝试了以下代码,并且是成功的。

 HtmlElementCollection htmlcol = ((WebBrowser)sender).Document.GetElementsByTagName("input"); for (int i = 0; i < htmlcol.Count; i++) { if (htmlcol[i].GetAttribute("value") == "Search") { htmlcol[i].InvokeMember("click"); } } 

我已尝试此代码以满足以下条件

  

你也可以尝试这样的html标签,我希望它能为你工作......享受

那个没有id或名字的按钮会提交它所包含的任何forms – 如果你知道HTML,那么表单是否有id? 如果是这样,你可以通过它的id找到表单并调用它的提交方法。

事实上,您可能最好找出该表单的所有字段,然后自己发布到它:

 var inputs = new NameValueCollection(); inputs.Add("field1", "value1"); inputs.Add("field2", "value2"); inputs.Add("field3", "value3"); System.Net.WebClient Client = new WebClient(); Client.Headers.Add("Content-Type", "application/x-www-form-urlencoded"); byte[] POSTResultData = Client.UploadValues(postUrl, inputs);