【问题标题】:WebBrowser control - Get element By type?WebBrowser 控件 - 按类型获取元素?
【发布时间】:2011-04-09 05:46:58
【问题描述】:

我需要在 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# 中调用(“click”)使用不同的方法?

谢谢。

【问题讨论】:

  • 你的平台是什么? ASP?银光?表格? wpf? (等等)

标签: c# .net webbrowser-control


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

    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 标签,我希望它对您有用... 享受

    【讨论】:

      【解决方案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);
      

      【讨论】:

        猜你喜欢
        • 2011-01-11
        • 1970-01-01
        • 2011-09-30
        • 2010-10-12
        • 1970-01-01
        • 1970-01-01
        • 2012-08-29
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多