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

时间:2011-04-09 05:46:58

标签: c# .net webbrowser-control

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

<button type="submit" class="orangeBtn">Send Invitations</button>

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

HtmlElement m_SubmitField = m_Browser.Document.All["orangeBtn"];

if (m_SubmitField != null)
    m_SubmitField.InvokeMember("click");

有没有另外一种工作方式可以做到这一点?

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

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

感谢。

3 个答案:

答案 0 :(得分:6)

您可以使用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");
     }
}

答案 1 :(得分:1)

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

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

我已经针对以下情况尝试了此代码

<input type="submit" value="Search">

你也可以试试这样的html标签,我希望它对你有用...... 享受

答案 2 :(得分:-3)

没有id或名称的按钮会提交它包含的任何形式 - 如果你知道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);